iOS中@关键字

2018-11-12  本文已影响0人  土豆赶着鸡

@property

作用:快速创建实例变量存取;允许点语法使用

在编译阶段编译器自动生成ivar成员变量+set方法+get方法
属性名前加前缀_,set/get方法使用驼峰式命名
往类添加属性,系统会在objc_ivar_list中添加一个成员变量的描述,在objc_method_list中添加set/get方法的描述

举例:字符串var,分别对应_var、setVar、getVar

注意:当类有同名成员变量,就不在重复添加

@synthesize

作用:为属性添加一个实例变量名,或者说别名。同时会为该属性生成 setter/getter 方法
当我们同时重写了setter and getter方式时,需要在.m的文件中使用@synthesize
当在 protocol 中声明并实现属性时,需要使用@synthesize生成setter和getter
如果 @synthesize和 @dynamic都没写,那么默认的就是@syntheszie var = _var
@syntheszie var = _var;等价于 @syntheszie var;

@dynamic

属性的 setter 与 getter 方法由用户自己实现,不自动生成。当然对于 readonly 的属性只需提供 getter 即可

@synchornized(obj)

obj作为锁对象,底层通过哈希表实现,锁异常会自动解锁,牺牲性能换来代码的简洁

注意:一个代码块只需一把锁,多把锁是无效的

上一篇下一篇

猜你喜欢

热点阅读