假设我们有三个对象:祖父母、父母和子元素.祖父母保留父母,父母保留子元素,子元素保留父母.祖父母释放父母.

在这种情况下会发生什么?

推荐答案

除非对父母或子元素有其他提及,否则他们都会成为孤儿.但是父母和子元素之间的保留周期会阻止他们中的任何一个被释放,并成为浪费的内存.

子元素永远不应该留住父母.如果有的话,在子对象中使用弱引用来保持对父对象的引用.

Objective-c相关问答推荐

Objective-C 中的实例变量是否默认设置为 nil?

从 float 或 double 实例化 NSDecimalNumber 的正确方法

将 NSInteger 变量传递给 NSMutableDictionary 或 NSMutableArray

dispatch_get_global_queue 和 dispatch_queue_create 有什么区别?

有没有办法清除 UIImage 类使用的缓存?

在 UILabel.attributedText *not* 蓝色和 *not* 下划线

滚动 NSScrollView 时的回调?

iOS 正确使用 @weakify(self) 和 @strongify(self)

以编程方式调用情节提要场景(无需转场)?

不区分大小写的核心数据 CONTAINS 或 BEGINS WITH 约束

观察 UIDatePicker 的变化

lldb 无法打印变量值并显示错误:对 'id' 的引用不明确

在 Objective C 中使用 extern

从 NSMutableString 中删除最后一个字符

IOS 6强制设备方向为横向

Objective-c - CABasicAnimation 在动画后应用更改?

如何判断 WkWebView 是否在 Objective-C 中完成加载?

目标 C:读取文本文件

找出窗口中的 UIBarButtonItem 框架?

如何设置字体大小以填充 UILabel 高度?