整理一下自己学到的知识,方便以后查看
常规属性描述
1.NSString、NSArray、NSDictionary 等等经常使用copy关键字,是因为他们有对应的可变类型:NSMutableString、NSMutableArray、NSMutableDictionary;
2.block使用copy是从MRC遗留下来的“传统”,在MRC中,方法内部的block是在栈区的,使用copy可以把它放到堆区.在ARC中写不写都行:对于block使用copy还是strong效果是一样的,但写上copy也无伤大雅,还能时刻提醒我们:编译器自动对block进行了copy操作。
如何让自定义类可以调用copy方法
1.声明该类的时候遵循NSCopying协议
2.实现copyWithZone方法
-(id)copyWithZone: (NSZone*)zone;
注:copy即使是深拷贝,但是内部元素(如字典或数组内的元素)没进行深拷贝,如果需要对对象进行完全性的深拷贝,需要去实现一些其他的操作。(可以在深拷贝时,也对元素进行一次深拷贝,或者利用序列化与反序列化等)
网友评论