您的位置:首页 > 其它

NS对象的深复制与浅复制

2016-01-25 23:32 288 查看
1. copy 和 mutableCopy

不可变 copy : (非容器或容器)浅复制

可变(copy, mutableCopy), 不可变(mutableCopy): (非容器或容器)深复制

容器内对象, 始终为浅复制

2. initWithArray: 和 initWithArray: copyItems: (Dictionary, Set 相同)

  initWithArray: 容器为新地址, 容器内对象为地址拷贝

  initWithArray: copyItems: 容器为新地址, 容器内对象调用copy方法构成新容器成员

3. arrayWithArray: 与initWithArray

  initWithArray: 等同于 alloc → init 引用指数加1

  arrayWithArray: a. alloc init 引用指数加1 方法内持有;

b. 返回后默认注册到autoreleasePool;

c. 超过方法外的自动变量,release一次 引用指数减1

d. 方法调用方使用__strong自动变量强持有一次,引用指数加1

所以说前者更高效
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: