【发布时间】:2015-08-11 11:21:21
【问题描述】:
我研究手动内存管理,我想知道自动释放池何时耗尽。
我发现有 3 种情况:
1 - 在main.m 中,从应用程序运行开始并在结束时耗尽,因此释放内存中的所有对象。
2 - 当您手动显式创建自动释放池并将其耗尽时
第三种情况是我所要求的,这让我有点困惑。
正如我所研究的,自动释放对象就像 C 中的自动变量一样,只存在于逻辑范围内(在函数体中)。因此,我假设每个函数后面都有一个隐藏的[pool drain];
但是,有人向我指出,这并不像我想的那样正确。苹果公司表示,它在“事件”之后会耗尽。该事件可能在用户点击按钮时发生,例如重新加载表格视图。
但这些信息不足以了解全貌。您能否为我澄清一下,什么时候池中的物体会耗尽,比如NSArray *arr = [NSArray array];?
【问题讨论】:
-
自动释放池不会在每个函数结束时耗尽,而是在每次将控制权交还给运行循环时。
-
@Rob 这就是我所要求的,什么时候发生?
-
@rob 好的,这很好,但是我怎么能确定哪种方法确实会耗尽池?有方法列表吗?还是一些标准?
-
@Rob 但是有很多方法调用“幕后”,比如 NSObject +load。显然,池在任何 NSObject 加载时都不会耗尽。我喜欢你的解释,但仍然看不到全貌:)
标签: ios objective-c memory-management