勤于思考:Objective-C特性的扩展
2014-05-14 15:24
288 查看
赋值
assign:直接赋值、默认
retain :保留对象
copy: 拷贝对象
三者的区别
assign:直接赋值,只是一个别名而已
retain:保留的这个对象,两个对象指向了同一个位置
copy:开辟了新的内存空间,分别指向了不同的内存位置,引用技术分别为l,
与之前的对象完全脱离关系。这里我们尤其需要注意,某些时候copy的作用相当于retain。
读写性
readwrite:可读可写、默认
readonly: 只读
原子性
atomic:多线程环境下,存在线程保护
noatomic: 多线程环境下,不存在线程保护
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: 多线程环境下,不存在线程保护
相关文章推荐
- 【IOS 开发】Objective - C 面向对象高级特性 - 包装类 | 类处理 | 类别 | 扩展 | 协议 | 委托 | 异常处理 | 反射
- 【IOS 开发】Objective - C 面向对象高级特性 - 包装类 | 类处理 | 类别 | 扩展 | 协议 | 委托 | 异常处理 | 反射
- (2)预期+思考【利用objective-c的runtime特性,结合FMDB实现轻量级的ORM】
- GCC扩展特性
- C# 3.0 新特性 学习(二):匿名类型、扩展方法
- 对一道面试题的总结与扩展思考(关于一笔画问题的数学分析)
- IOS学习三:Objective-C的扩展OOP,类别,内存管理等
- Objective-C的动态特性
- MariaDB扩展特性--虚拟列
- 简单讲解Objective-C的基本特性及其内存管理方式
- Objective-C语言特性——强引用、弱引用(Strong、Weak)
- iOS扩展——Objective-C开发编程规范
- Objective-C语言特性
- C++转Objective-c的纠结惆怅 —— objective-c的怪异特性
- 【转】Objective-C 属性特性(assign , retain , copy , readonly , readwrite , atomic , nonatomic)
- framework 3.0新特性——扩展方法
- Objective-C新特性__nonnull和__nullable
- Objective-C 特性快速一览表
- Objective-C新特性