Evg*_*ban 4 memory-management objective-c ios
我研究手动内存管理,我想知道自动释放池何时耗尽.
有三种情况,我发现:1 - 在main.m,从应用程序运行开始,并在结束时排干,因此释放内存中的所有对象.2 - 当您手动显式创建自动释放池并将其耗尽时
第三种情况是我要求的,对我来说有点混乱.
在我研究时,自动释放对象就像C中的自动变量一样,只存在于逻辑范围内(在函数体中).因此,我想在每个函数之后都有一个隐藏的[pool drain];
但是,有人向我指出,我认为这不正确.苹果说,它在"事件"之后消失了.当用户点击按钮时,可能会发生该事件,例如重新加载表视图.
但是这些信息还不足以让人看到整体情况.你能否为我澄清一下,当一个游泳池正好用于物体时NSArray *arr = [NSArray array];?
该文档并未具体说明"主"自动释放池何时耗尽,但通常您可以假设它在应用程序的主事件循环结束时耗尽.
以下是自动释放池的情况:
autorelease发送到对象时,它会被添加到堆栈顶部的自动释放池中.release发送到自动释放池时,它又会发送release到池中的任何对象.#4通常在主事件循环结束时自动发生(对于主自动释放池).
该文档NSAutoreleasePool包含更多信息,包括此相关信息:
Application Kit在事件循环的每个循环开始时在主线程上创建一个自动释放池,并在最后将其排出,从而释放处理事件时生成的任何自动释放的对象.