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;

 

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。