NS对象的深复制与浅复制

 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

      所以说前者更高效

posted @ 2016-01-25 23:32  MittyoO  阅读(185)  评论(0编辑  收藏  举报