iOS 内存管理篇
什么情况使用 weak 关键字,相比 assign 有什么不同?
解决循环引用
本身已经强引用过了,没必要再强引用一次了。比如 IBOutlet 控件
weak、assign 都不回加引用计数,当释放时,weak 的会置为 nil,此时 OC 给 nil 发消息没问题。assign 不会释放,会产生野指针,发消息可能崩溃。
assign 可以修饰基本类型,weak 必须是 OC 对象
<a name="lPwRz"></a>
如何让自定义类可以用 copy 修饰符?
实现 NSCoping 协议
实现 NSMutableCoping 协议
复制代码
<a name="RpwRP"></a>
<a name="wAE63"></a>
如何重写带 copy 关键字的 setter?
复制代码
<a name="nvBrZ"></a>
<a name="swY6h"></a>
@property 的 NSString 为什么要使用 copy 修饰?使用 strong 会有什么问题?
答: 因为父类指针可以指向子类对象。<br />比如:可变字符串是不可变字符串的子类,这样就有可能原本想传入 NSString 的传入了 NSMutableString,外部修改后,会有影响。 但传入 copy 的话,就不会。
<a name="AcPw9"></a>
深拷贝和浅拷贝
浅拷贝:每一层都是指针拷贝
深拷贝:至少有一层是深拷贝
完全拷贝:每一层都拷贝
非集合:
复制代码
集合:
复制代码
版权声明: 本文为 InfoQ 作者【刁架构】的原创文章。
原文链接:【http://xie.infoq.cn/article/49f66402a27c56e83817dd1bb】。文章转载请联系作者。
评论