簡體   English   中英

訪問單例方法(ARC)時的iOS內存管理

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM