2011-09-10 38 views

回答

7

不要。 從不釋放您的應用程序委託 - 它由操作系統自動管理。

如果您查看應用程序的main.m文件,您會看到一些代碼初始化代表您的應用程序的UIApplication實例 - 它負責管理應用程序委託的生命週期,而不是您的責任。

編輯作爲@Goz所指出的,您還是應該在某些時候,你retainrelease它。然而,由於應用對象(因此,通過擴展其代表)是保證保持在範圍內的應用程序的生命(除非你去用它搞亂),它遠遠不如干脆做任何的內存管理對代表,因爲這避免了意外過度釋放或其他相關問題的可能性。

+1

除非你打電話給它保留...那麼它需要被釋放。 – Goz

+1

@Goz:真的,但你爲什麼要去保留呢?它保證被分配給應用程序的生命(除非你去做一些愚蠢的事情,比如釋放它,例如...)簡單地避免保留/釋放可以防止意外的過度釋放。 – Mac

+0

好的討論+1。 :) – rptwsthi

0

簡短的回答:從來沒有發佈您的應用程序委託。

說明:
它經常幫助我如何解決mem-mgmt問題,當我檢查事物是如何聲明的。看看delegate屬性如何申報UIApplication

@property(nonatomic,assign) id<UIApplicationDelegate> delegate; 

正如你所看到的,它是分配財產意義在這裏完成所有MEM-MGMT只是一個實例變量分配指針。這意味着在您的應用程序代理上調用release將導致您的MyAppDelegate執行-dealloc方法。去調試器中試試這個,你會發現你的應用程序會收到EXC_BAD_ACCESS - 即它會崩潰。

編輯:然而,隨着戈茲貝達建議,您可以致電retain,然後release。但首先,在應用程序代理上執行此操作是沒有意義的。

相關問題