我有個問題關於自動釋放,現在我有代碼如下:autorelease和runloop和線程的關係?
int main(int argc, char *argv[]){
@autoreleasepool {
return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]));
}}
該文檔說在@autoreleasepool的端部{}標記爲自動釋放該對象將接收一個釋放消息。但UIApplicationMain永遠不會返回,這意味着流將永遠不會到達@autoreleasepool的末尾,那麼標記爲autorelease的對象將永遠不會釋放,直到應用程序死亡。有沒有autorelease的意義.....
我問過誰說iOS系統會產生一些線程,(你知道,一個線程,一個runloop)。他說,runloop將創建autorelease池所以autorelease對象會在thead或runloop結尾處釋放。但是我們使用主線程的最多情況是,他所說的並不能說服我。
什麼時候使用autorelease.It困惑了我很長一段時間。
我再弄點自動釋放對象會得到釋放,當一個runloop端(主runloop將存在的所有應用程序的生命?),所以我不知道..
任何一點及其相關文件將不勝感激!
我問了同樣的問題。對於什麼是可接受的行爲來說,這很可能是語義/演示的原因。 UIApplicationMain的唯一出路是程序「退出()」,所以任何內存都會返回到操作系統。 – borrrden
是的,你是對的。 – frank