Cocoa-touch中的主要自动释放池何时耗尽?

jak*_*kev 9 cocoa-touch objective-c autorelease

#import <UIKit/UIKit.h>

int main(int argc, char *argv[]) {
    NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
    int retVal = UIApplicationMain(argc, argv, nil, nil);
    [pool release];
    return retVal;
}
Run Code Online (Sandbox Code Playgroud)

应用程序退出后,main方法调用池上的release,这会顺便发送释放到池中的所有对象.但是因为在应用程序内部创建的自动释放对象在应用程序退出之前不会停留,所以在runloop期间的某个时刻,池要么被耗尽要么被释放(在iPhone的情况下,排除==释放..除非我需要纠正了这一点!).但有人知道这种情况何时发生?这似乎是合乎逻辑的池在runloop结束倒掉,和一个新在下次开始时alloced,但我无法找到任何这明确的信息.这是关于苹果论坛的讨论,但它似乎是高度推测的(更不用说有争议的,到最后).任何人都可以给我一个答案,理想情况下是文档或源代码(甚至是实验程序)的证据吗?

Tod*_*ell 11

来自NSAutoreleasePool类参考:

Application Kit在事件循环的每个循环开始时在主线程上创建一个自动释放池,并在最后将其排出,从而释放处理事件时生成的任何自动释放的对象.