2012-08-28 62 views
1

我們知道靜態和單一的辯論,所以這個問題不是關於static關鍵字的合法性。Monotouch中的靜態和內存管理

當你有一個靜態類時,Monotouch處理的內存如何。當收到內存警告時是否刪除了其成員?有沒有關於在Monotouch中使用靜態類的指導原則?

回答

4

靜態類和成員將在應用程序的整個生命週期中停留。

通常我不會擔心靜態類。最大的擔心是確保您正在清理所有控制器中的ViewDidUnload

在這裏,你應該:

  • 部署和設置任何網點空(ReleaseDesignerOutlets將在MonoTouch的更高版本做到這一點),你必須做你自己從代碼
  • 照此創建的任何意見對於在ViewDidLoad創建的UIImage,UIFont等的任何實例
  • ViewDidUnload應的ViewDidLoad
鏡像

ViewDidUnload被稱爲低內存條件控制器當前未在屏幕上,如那些倒在UINavigationControllers棧等

此外,你可能想在任何掛接到低內存通知從UINotificationCenter幫助類緩存UIImage,UIFont等

釋放視圖和圖像將釋放更多的內存,你會得到多少內存靜態類正在使用。

+0

好東西。考慮靜態拋棄實例對象(即每次調用靜態類時創建和銷燬資源)。 – bytefire

+1

@jonathanpeppers僅供參考:iOS的未來版本可能不再調用ViewDidUnload和ViewWillUnload ...您可能需要檢出最新的WWDC視頻。 – Krumelur

+0

這通常會影響MonoTouch,'ReleaseDesignerOutlets'由MonoDevelop生成。你有鏈接到這些視頻之一嗎? – jonathanpeppers