深拷贝,浅拷贝与copy,strong
2015-09-09 10:03
447 查看
深.浅拷贝
copy mutableCopy NSString
copy mutableCopy NSMutableString
结论:
注意:其他对象NSArray、NSMutableArray 、NSDictionary、NSMutableDictionary一样适用
copy NSObject
崩溃:
看崩溃信息HSPerson应该先实现:
- (id)copyWithZone:(NSZone *)zone;
测试
可以看出copyWithZone重新分配新的内存空间,则:
虽然copy了份新的对象,然而age,height值并未copy,那么:
这时你会想,有NSMutableCopying?没错,是有这货:
NSCopying、NSMutableCopying有啥区别?
其实感觉没必要有NSMutableCopying,因为压根就没可变的HSPerson,但如果该对象有其他行为,可以借用NSMutableCopying实现,哈哈哈
copy.strong
说完深浅拷贝,理解copy.strong就轻松多了!
copy
property copy 实际上就对name干了这个:
假设name为NSMutableString,会发生什么事?
@property (nonatomic, copy) NSMutableString *name;
这样会挨骂哦,实际上内部还是:
copy出来的仍然是不可变字符!如果有人用NSMutableString的方法,就会崩溃:
strong
@property (nonatomic, strong) NSString *name;
总结:用copy与strong取决于需求,如果不希望被外界更改用copy,反之用strong
copy mutableCopy NSString
copy mutableCopy NSMutableString
结论:
注意:其他对象NSArray、NSMutableArray 、NSDictionary、NSMutableDictionary一样适用
copy NSObject
崩溃:
看崩溃信息HSPerson应该先实现:
- (id)copyWithZone:(NSZone *)zone;
测试
可以看出copyWithZone重新分配新的内存空间,则:
虽然copy了份新的对象,然而age,height值并未copy,那么:
这时你会想,有NSMutableCopying?没错,是有这货:
NSCopying、NSMutableCopying有啥区别?
其实感觉没必要有NSMutableCopying,因为压根就没可变的HSPerson,但如果该对象有其他行为,可以借用NSMutableCopying实现,哈哈哈
copy.strong
说完深浅拷贝,理解copy.strong就轻松多了!
copy
property copy 实际上就对name干了这个:
假设name为NSMutableString,会发生什么事?
@property (nonatomic, copy) NSMutableString *name;
这样会挨骂哦,实际上内部还是:
copy出来的仍然是不可变字符!如果有人用NSMutableString的方法,就会崩溃:
strong
@property (nonatomic, strong) NSString *name;
总结:用copy与strong取决于需求,如果不希望被外界更改用copy,反之用strong
相关文章推荐
- Hadoop-2.6.0 集群的安装配置
- 生成注册码的好网站
- 生成注册码的好网站
- Hadoop-2.6.0 集群的安装配置
- 深入理解RunLoop
- 网站前端开发-一个网站页面的组成部分
- Linux 网卡高级管理
- windows operate
- tomcat8 部署到Linux系统中,webService服务无法使用
- 移植OpenWrt到CuHead Pro WiFi
- SOA架构
- linux调度器(十)——调度器/proc信息解读
- 安克急救管理系统架构
- shell 小脚本
- linux调度器(九)——调度器的配置参数
- linux调度器(八)——实时调度与SMP
- linux调度器(七)——other cfs class api and functions
- linux调度器(六)——应用层理解CFS及组调度
- linux调度器(五)——进程管理与CFS
- Maven依赖Scope标签用法