2012-10-29 26 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

相關問題