在iOS App中是否创建了许多自动释放池?

时间:2012-10-29 13:49:51

标签: objective-c ios nsautoreleasepool nsrunloop

我怀疑自动释放物体的时间。我发现这个question

在线程接受的答案中,为runloop执行提供了以下说明:

void int UIApplicationMain (int argc, char *argv[], NSString *principalClassName, NSString *delegateClassName) {
    UIApplication *app = /* create app using principalClassName */;
    [app setDelegate:/* create delegate using delegateClassName */];
    while (![app shouldTerminate]) {
        NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
        event = [app getNextEvent];
        [app dispatchEvent:event];
        [pool drain];
    }
}

这是runloop执行的原因吗?

这意味着每次执行runloop时,都会创建并发布一个新的自动释放池。

1 个答案:

答案 0 :(得分:3)

是。你在每个循环中创建一个新池并销毁它。

This解释了引用计数环境中的drain如何等同于release,因此会被销毁。接下来循环,您allocinit另一个。