[英]iOS memory management when accessing singleton method (ARC)
假設我們有Singleton類,名為SingletonClass。 我們可以訪問它
[SingletonClass SharedInstance]
現在,當我們通過以下任何其他類來訪問它的方法時,請說ClassOther
__weak singletonObj = [SingletonClass SharedInstance];
[singletonObj methodA];
因此,當ClassOther的對象發布時,singletonObj弱連接並正確釋放。
但是,如果我嘗試
[SingletonClass SharedInstance] methodA];
當ClassOther被釋放時,它會釋放出與SingletonClass相關的所有內容嗎? 即它是否循環並且不釋放ClassOther,因為我們訪問SingletonClass並且它沒有弱鏈接?
假設SingletonClass的SharedInstance方法實際上是單例模式的正確實現,一旦SingletonClass首次通過SharedInstance初始化,它應該在應用程序處於活動狀態的剩余時間內保持活動狀態。
Singleton模式的重點是擁有共享該對象的單個實例。
你沒有必要做這樣的事情
__weak singletonObj = [SingletonClass SharedInstance];
[singletonObj methodA];
因為在調用SharedInstance時總是可以訪問同一個對象。 無論ClassOther做什么和不應該做什么,SingletonClass的一個實例應該從第一次調用SharedInstance到應用程序從內存中清除時保留在內存中。
SharedInstance應該是小寫的sharedInstance。
如果使用普遍接受的模式創建單例對象(使用靜態變量和dispatch_once),它將被創建一次並永遠保留在內存中。 如何做到已經回答了幾十次,所以只需要搜索它。
使用單例對象時,絕對沒有理由使用弱或強或任何指針。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.