tags: OC 30 day
@property参数
@property可以带参数的
@proporty(参数1,参数2,参数3...)数据类型 名称;
@property 的四组参数
与多线程相关的两个参数
atomic,nonatomic
与生成setter方法的实现相关参数
assign,retain
与生成只读,读写相关的参数
readonly,readwrite
是与生成的getter setter方法名字相关的参数
getter setter
多线程相关的参数
atomic:默认值。如果写atomic,这个时候生成的setter方法的代码就会被加上一把现成安全锁。特点:安全,效率较差。
nonatomic:如果写nonatomic 这个时候生成的setter方法的代码就不会加县城安全锁。特点:不安全,效率高。
建议:要效率,最好使用nonatomic。
setter方法实现相关参数
assign:默认值,生成setter方法的实现就是直接赋值。
retain:生成的setter方法的实现就是标準的MRC内存管理代码。也就是先判断新旧对象是否为同一个对象。如果不是release旧的 retain 新的。
当属性的类型是OC对象类型的时候,那么就使用retain。
当属性的类型是非OC对象的时候,使用assign。
retain参数,只是生成标準的setter方法为标準的MRC内存管理代码,不会自动地在dealloc中生成release的代码。所以,我们还要手动的在dealloc中release。
与生成只读 读写封装
readwriter:默认值,代表同时生成getter setter
readonly:只会生成getter 不会生成setter
生成getter,setter相关的参数。
默认情况下,@property 生成的getter setter 方法都是最标準的名字。
其实我们可以透过参数来指定@property 生成方法的名字。
getter = getter方法名字 用来指定@property 生成的getter方法的名字。
setter = setter方法名字,用来指定@property生成setter方法的名字,注意setter方法是带参数的,所以要加一个冒号。
修改生成getter setter 方法名字,因为默认下生成的方法名字已经是最标準的名字了。所以一般情况下不要去改。
无论什么情况下都不要改setter方法的名字。因为默认情况下生成的名字已经是最标準的了。什么时候修改getter方法的名字。当属性的类型是一个BOOL类型的时候,就修改这个getter的名字以is开头,提高代码的阅读性。