@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作为锁对象,底层通过哈希表实现,锁异常会自动解锁,牺牲性能换来代码的简洁
网友评论