iOS属性及属性关键字
一、属性功能:
1.给现有的成员变量生成一对setter/getter方法。
2.如果没有声明成员变量,自动声明一个_属性名的私有变量(默认的成员变量是受保护的)。
二、属性关键字:
assign 默认(缺省)关键字,基本数据类型的赋值。
MRC:手动管理内存
retain 对象的属性声明,保存引用计数,如果别的对象使用当前对象,则该对象的计数器加1,即两个对象同时指向同一块内存。
copy 对象的属性声明,直接拷贝对象为一个新的副本,而被拷贝的对象的计数器不会加1,即两个对象分别指向不同的内存,只是内存中的数据相同。
ARC:自动管理内存
strong 强指针,增加一个对象的引用权限(引用计数加1)
weak 弱指针,不会增加对象的引用权限,不会影响对象是否释放。
strong和weak 应用在对象类型的属性里面
ARC下可以使用retain,copy。
线程相关
nonatomic 单线程的程序的属性声明,缺省关键字,单线程下使用,执行效率高。
atomic 多线程的程序的属性声明,并不建议使用atomic来处理线程安全,执行效率低。
属性读取权限的关键字
readwrite 生成getter和setter方法,缺省权限
readonly 只生成getter方法,即只能访问,不能赋值。
三、属性关键字的使用:
非对象类型 使用assign可省略
对象类型 使用retain/strong
NSString 使用copy/strong
例如:
1 @property (nonatomic, assign) CGFloat duration; 2 @property (nonatomic, strong) GLProgram *program; 3 @property (nonatomic, copy) NSString *dirPath;
时间: 2024-10-25 10:52:33