我使用一個單獨的類的實例共享的功能,做我需要做的對象上的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. 試圖從一個共享實例
- 4. RSpec的共享實例不能共享
- 5. 共享NSHTTPCookieStorage實例
- 6. 共享實例swift
- 7. 在C#中保留一個WebDriver實例
- 8. 子實例共享一個共同的superinstance
- 9. 共享變量的多個ScriptControl實例
- 10. 加載共享庫的兩個實例
- 11. 與另一個控件共享屬性的一個實例?
- 12. 讓一個班級的所有實例共享一個值 - Audioclips
- 13. 保存共享圖例ggplot2
- 14. IIS實例共享數據
- 15. 關於在共享實例
- 16. Scalatest共享服務實例
- 17. ASMX服務共享單個類實例
- 18. 兩個UICollectionView實例共享相同的UICollectionViewFlowLayout實例嗎?
- 19. 如何保留MySQL的多個實例
- 20. 在多個實例中保存共享選區
- 21. 一個JVM中兩個JRuby實例之間的共享對象
- 22. Dos同一個MovieClip的多個實例共享Cache嗎?
- 23. 共享一個實例,但創造的每個新工藝
- 24. C#讓多個類共享另一個類的相同實例
- 25. 幾個類共享另一個類的實例
- 26. 每個組件不共享一個服務的實例
- 27. 如何與多個類共享一個類的實例?
- 28. 的iOS文件寫入到一個共享/共享空間
- 29. DataContractJsonSerializer - 爲整個圖形共享一個對象實例?
- 30. 如何:多個Django實例共享一個全局變量?
Jhaliya是點這裏。沒有必要保留,因爲singleton通常有一個模式等同於在sharedInstance中執行此操作:static myStaticInstance = [[MyClass alloc] init]; – pho0 2011-05-31 03:48:16
調用代碼不應該對班級如何管理其內存做出假設。一個類可能會呈現一個類似單例的界面,但實際上在某些時候實際上會給你一個新的實例。如果你在這種情況下依靠單身人士,你最終會得到一個懸掛指針。 @ pho0 – 2011-05-31 18:48:33