内存管理、自动引用计数与对象复制技术解析
1. 内存管理与自动引用计数
在内存管理中,为解决对象间引用可能产生的问题,引入了弱引用(weak reference)的概念。若一个对象拥有另一个对象,前者为强引用,后者为弱引用。例如,父视图对其子视图持有强引用,子视图对其父视图持有弱引用,这样可避免保留循环(retain cycle)。
弱变量不会阻止其所引用对象的释放。当声明一个弱变量时,系统会跟踪对该变量的引用。当引用的对象被释放后,弱变量会自动被设置为 nil ,从而防止因意外向该变量发送消息而导致的崩溃。声明弱变量可使用 __weak 关键字,示例如下:
__weak UIView *parentView;
也可在属性中使用 weak 属性:
@property (weak, nonatomic) UIView *parentView;
弱变量在处理委托(delegate)时也很有用。将持有委托引用的变量设为弱变量,可确保委托对象被释放时该变量被置零,避免系统崩溃。不过,iOS 4 或 Mac OS v10.6 不支持弱变量,此时可使用 unsafe_unretained (或 assign )属性,或声明变量为 __unsafe_unretained ,但这些变量在引用对象被释放时不会自动
超级会员免费看
订阅专栏 解锁全文
11

被折叠的 条评论
为什么被折叠?



