深拷贝和浅拷贝
1、如果开始是可变的(nsmutablestring)-copy和mutablecopy之后都会产生新的对象,生成两块内存。(深度拷贝,产生新对象)
如果开始是不可变的(string)-copy(不产生新对象,地址拷贝,指针拷贝,浅拷贝)-mutablecopy-(深度拷贝,产生新对象)
Xcode中大多数为浅拷贝!
文章图片
2、对象的拷贝 copy会遵循NSCopying协议,实现该协议的copyWithZone方法,此方法内部声明的也为copy,没有mutablecopy。
【深拷贝和浅拷贝】如果在@property中声明为copy,则后面的变量为不可变的;如果变量为可变的,则在@property中声明为strong。
strong出来的变量,赋值给strong变量的对象属性改变,则此变量改变,为同一块内存,没有产生新的变量。copy出来的变量,为另一个新的对象,此变量的值不会随着赋值给此变量的变量而改变。
推荐阅读
- 急于表达——往往欲速则不达
- 第三节|第三节 快乐和幸福(12)
- 20170612时间和注意力开销记录
- 2.6|2.6 Photoshop操作步骤的撤消和重做 [Ps教程]
- 对称加密和非对称加密的区别
- 眼光要放高远
- 深入理解Go之generate
- 樱花雨
- 由浅入深理解AOP
- 前任