IOS开发--第四阶段--Copy
深拷贝与浅拷贝
只有实现了NSCoping协议的对象才能进行copy,自定义对象的copy需要实现NSCopy协议,具体是深拷贝还是前拷贝取决于协议如何实现
copy得到的类型一定是不可变的;mutableCopy得到的类型一定是可变的
浅拷贝:拷贝过后内存地址(指针)没有改变;
深拷贝:拷贝过后内存地址(指针)发生改变;
不可变的类型进行不可变的拷贝是浅拷贝,其他都是深拷贝;只要见到mutable,都是深拷贝(不管是拷贝类型还是拷贝方法);
1)NSString: copy 浅拷贝 , 拷贝过后为 NSString 不可变;
mutableCopy 深拷贝, 拷贝过后为 NSMutableString 可变;
2)NSMutableString: copy 深拷贝 , 拷贝过后为 NSString 不可变;
mutableCopy 深拷贝 , 拷贝过后为 NSMutableString 可变;
(NSArray, NAMutableArray) (NSDictionary, NSMutableDictionary) NSSet(集合)同上类似
注意:
错误代码:@property ( nonatomic,copy)NSMutableArray * mutableArray;
运用该种写法时必须重写其set放法;
正确写法:@property ( nonatomic,retain)NSMutableArray * mutableArray;
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。