深拷贝和浅拷贝/strong与 copy 区别
====
- 1.深拷贝是内容的拷贝,浅拷贝只是指针的拷贝,浅拷贝使指针 retain 一次,对于不可变数组(或 string 或 dictnory)的 copy 操作是浅拷贝,对不可变数组(或同上。)的 multyCopy 操作同对可变数组(或同上)的 copy 和 multyCopy 操作都是深拷贝
- 1.1 不可变数组经过 copy 操作之后,仍具有修改 copy 后副本,不影响原件的功能,原理是,修改不可变数组,会开辟新的存储空间,存储新的值,所以不会影响原件的值
- 2.static 会使变量在内存中保留一个位置,拿到这个变量时,不再会初始化,对于全局变量的 static,可以防止外界的修改等不安全的行为,访问外界的全局变量:extern
- 3.类的 copy 如何实现
- 类遵守协议
- 重写 copyWithZone 方法,在方法中,创建一个新对象,将对象的属性进行赋值
4.属性 strong 与 copy 的区别
4.1@property(strong) NSString * name;
_name = string = @”123”;
当 string = @”456”;
_name = @”456”;
也就是_name 随着 string 的改变而改变4.2@property(copy) NSString * name;
copy 不会受到 string 的改变而改变
- 5.
- 这里的 name 虽然是可变的,但是 copy 后是不可变的,不可变数组不能使用 Appending xxx方法: