修饰词相关

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方法

上一篇 下一篇

猜你喜欢

热点阅读