修饰词相关
2020-03-22 本文已影响0人
题小记
深拷贝 浅拷贝
浅拷贝:只复制对象的引用地址(指针),指向同一块内存地址,相互关联
深拷贝:复制一个对象的实体,相互独立。修改一个对象不会引起另一个对象的改变
copy
NSString NSmutableString下 使用Copy
当Copy NSmutbaleString时,copy是深拷贝,防止在对原数据修改的时候导致新数据的变化。
对于 NSString copy是浅拷贝,因为本身NString 不可变。这时候也是可以使用Strong来修饰的
因为希望新生成的数据不会被影响,所以使用copy更有健壮性
NSArray NSmutableArray NSDictionnary NSMutableDictionary
通常使用Strong修饰,指向同一个对象,类似于String 当可变对象的时候 为了保障数据的一致性。其他的对象修改的时候 我们一般使用Strong修饰
copy出来的数据都是不可变的。无法调用可变对象的方法
所以再使用不可变对象的时候 我们一般用
Block
Block实在栈区的,当捕获变量的时候 会被复制到堆区,栈区是由系统管理释放的,如果不拷贝到堆区,可能会导致在使用的时候 Block已经被系统释放。
实现对象的copy
遵守NScoping协议,实现copywithzone方法