2012-10-29 16 views
0

我在怀疑自动释放对象的时候。当我发现这个question在iOS应用程序中是否创建了许多自动释放池?

在线程的接受的答案,下面的解释提供了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时,都会创建并释放一个新的autorelease池。

回答

3

是的。每个循环你都在创建一个新的池,并摧毁它。

This说明如何drain在参考计数的环境中,相当于release,因此它被破坏。接下来的循环,你可以使用另一个allocinit

相关问题