我使用一個單獨的類的實例共享的功能,做我需要做的對象上的retain
?我見過一些例子做到這一點:AVAudioSession *session = [[ AVAudioSession sharedInstance] retain];
而少數簡單地做:AVAudioSession *session = [ AVAudioSession sharedInstance];
。我確信有一個規則應該告訴我該怎麼做,但我不知道。的iOS:保留一個共享實例
3
A
回答
4
你說得對,有rules that tell you what to do。它們與Cocoa Touch中其他地方使用的規則相同。一個單身的客戶不應該關心他們正在使用的對象是單身,他們絕對不應該依靠單的單內斯避免了通常的內存管理公約。
是的,如果你知道一個對象是單身,你知道它不會被釋放,保留它似乎是多餘的。另一方面,當你獲得它時保留單例,當你做得更好的時候釋放單例,這就證明了程序員的意圖,並避免了向任何人(包括未來)解釋爲什麼不保留這個特定對象。最重要的是,它可以防止代碼依賴於代碼的其他部分的實現細節。
7
簡單地把它當作好像它是任何其他對象。有時單例類會覆蓋內存管理方法,以確保它不會被釋放,但是無法知道共享對象是否具有此功能。有了共享對象和單例,如果第一個被釋放,將根據需要創建一個新對象。因此,如果您需要確保指針在將來的方法中有效,請在獲取它時保留該共享對象。如果你不需要保留它,你不需要做任何事情,因爲sharedInstance
方法會自動釋放它。
1
你do'nt需要,因爲它作爲單類實施保留sharedInstances。
相關問題
- 1. 共享一個PrintDocument實例
- 2. 在哪裏保留一個對象實例,我想跨多個ViewModel共享
- 3. 共享實例swift
- 4. 共享NSHTTPCookieStorage實例
- 5. 在C#中保留一個WebDriver實例
- 6. 子實例共享一個共同的superinstance
- 7. 共享變量的多個ScriptControl實例
- 8. 加載共享庫的兩個實例
- 9. 與另一個控件共享屬性的一個實例?
- 10. 讓一個班級的所有實例共享一個值 - Audioclips
- 11. 保存共享圖例ggplot2
- 12. Scalatest共享服務實例
- 13. ASMX服務共享單個類實例
- 14. 一個JVM中兩個JRuby實例之間的共享對象
- 15. 幾個類共享另一個類的實例
- 16. 每個組件不共享一個服務的實例
- 17. 如何與多個類共享一個類的實例?
- 18. Dos同一個MovieClip的多個實例共享Cache嗎?
- 19. 共享一個實例,但創造的每個新工藝
- 20. 如何:多個Django實例共享一個全局變量?
- 21. DataContractJsonSerializer - 爲整個圖形共享一個對象實例?
- 22. 同一個AsyncTask的不同實例共享局部變量?
- 23. aws修改保留實例
- 24. 在Linux上的共享庫上存在多個單例實例
- 25. 應用程序的共享實例-iPhone
- 26. swift中的共享實例問題
- 27. 作爲共享實例的設置
- 28. CloudService實例之間的共享狀態
- 29. 實例變量的iOS應用程序沒有保留價值
- 30. 與實體和服務共享枚舉,保留一層還是兩者?
Jhaliya是點這裏。沒有必要保留,因爲singleton通常有一個模式等同於在sharedInstance中執行此操作:static myStaticInstance = [[MyClass alloc] init]; – pho0 2011-05-31 03:48:16
調用代碼不應該對班級如何管理其內存做出假設。一個類可能會呈現一個類似單例的界面,但實際上在某些時候實際上會給你一個新的實例。如果你在這種情況下依靠單身人士,你最終會得到一個懸掛指針。 @ pho0 – 2011-05-31 18:48:33