我正在学习手动内存管理,想知道自动释放池(autorelease pools)是何时释放的。
根据我的研究,有以下3种情况:
1 - 在main.m
文件中,从应用程序运行开始到结束时进行释放,因此释放内存中的所有对象。
2 - 当您手动创建一个自动释放池并将其释放时。
第三种情况是我询问的,这对我来说有点困惑。
据我所学,自动释放对象就像C语言中的自动变量,只存在于逻辑范围内(在函数体中)。 因此,我认为在每个函数之后都有一个隐藏的[pool drain];
但是,有人指出这不像我想象的那样正确。苹果公司表示,它会在“事件”之后进行释放。例如,当用户点击按钮、表格视图重新加载等事件发生时。
但这些信息还不足以完整地了解整个情况。 您能否为我澄清一下,例如NSArray *arr = [NSArray array];
这样的对象何时释放?