勤于思考:Objective-C特性的扩展
2014-05-14 15:24 薛凯凯圆滚滚 阅读(170) 评论(0) 编辑 收藏 举报赋值
assign:直接赋值、默认
@interface Car : NSObject { NSString *_name; } @property (assign,nonatomic) NSString *name; - (void) setName:(NSString *)name { _name = name; }
retain :保留对象
@interface Car : NSObject { NSString *_name; } @property (retain,nonatomic) NSString *name; - (void) setName:(NSString *)name { if (_name != name) { [_name release]; _name = [name retain]; } }
copy: 拷贝对象
@interface Car : NSObject { NSString *_name; } @property (copy,nonatomic) NSString *name; - (void) setName:(NSString *)name { if (_name != name) { [_name release]; _name = [name copy]; } }
三者的区别
assign:直接赋值,只是一个别名而已
retain:保留的这个对象,两个对象指向了同一个位置
copy:开辟了新的内存空间,分别指向了不同的内存位置,引用技术分别为l,
与之前的对象完全脱离关系。这里我们尤其需要注意,某些时候copy的作用相当于retain。
读写性
readwrite:可读可写、默认
readonly: 只读
原子性
atomic:多线程环境下,存在线程保护
noatomic: 多线程环境下,不存在线程保护