第11章 属性
11.1 使用属性值
用于生成访问方法,减少代码量。
11.1.1 简化接口代码
@property声明一个新对象的属性,即自动声明属性的setter和getter方法。
@property float num;
可以调用-setNum:和-num方法。
11.1.2 简化实现代码
@synthesize是一种新的编译器功能,表示“创建了该属性的访问代码”。当遇到@synthesize num;时,编译器将添加-setNum:和-num方法的预编译代码。(在Xcode4.5以后的版本中,可以不使用@synthesize了)
变量声明位置:头文件中,相当于protected。实现文件中,相当于private
11.1.3 点表达式的妙用
点表达式(.)可以使我们更加容易地访问对象的属性
点表达式(.)出现在等号的左边,调用setter方法
11.2 属性扩展
@property扩展
1、nonatomic 如果不在多线程中使用,可以调高访问方法的调用速度,经常在iOS中使用
2、不想保留某个变量对象,使用assign
3、copy复制属性
4、weak不会使超类的保留计数器值加1,strong会
11.2.1 名称的使用
属性的名称始终与支持属性的实例变量名称相同的情况时非常普遍的。但也可以不同,需在@synthesize绑定
@synthesize name=nameInClass;
11.2.2 只读属性
readonly
11.2.3 不生成代码
@dynamic 类名
11.2.4 自定义方法名
@property (getter=isHidden) BOOL hidden;