IOS开发--第四阶段--Copy

时间:2015-03-25 11:32:28   收藏:0   阅读:491

深拷贝与浅拷贝

 

只有实现了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;

 

原文:http://www.cnblogs.com/gegeboke/p/4364963.html

评论(0
© 2014 bubuko.com 版权所有 - 联系我们:wmxa8@hotmail.com
打开技术之扣,分享程序人生!