我對使用強和弱的地方有點困惑。有什麼工具可以監控ios中的引用計數嗎?在ARC中監視參考計數
回答
只需添加到其他意見,而很強的參考週期(以前稱爲保留週期)是很重要的理解,他們是比較少見的,除非你是在繞過指向父對象自己的孩子。如果你正在做這樣的事情,你應該確保你理解一些Apple文檔中概述的強參考週期(也稱爲保留週期)的討論,具體爲Acquire Basic Programming Skills,Advance Memory Management和Transitioning to ARC。實際上,保留週期的常見例子是如果您將指向父控制器的指針傳遞給子控制器。在這些情況下,一般應該使這些指針爲weak
,否則strong
通常很安全。
弱引用的另一種常見情況是用於NIB或Storyboard中的控件的IBOutlets,它通常也應該是weak
。 (如果您通過控制從Interface Builder中拖動到你的頭文件中的網點,將採取使他們weak
爲你的照顧。)無論如何,我會從Resource Programming Guide引用,它說:
奧特萊斯通常應該是弱的,除了文件的所有者 到筆尖文件中的頂層對象(或者在iOS中,故事板場景) 應該很強。您創建應該會因此 通常是默認弱奧特萊斯,這是因爲:
您創建,例如,一個視圖控制器的視圖或窗口控制器的窗口,子視圖是對象之間任意 引用奧特萊斯這並不意味着所有權。
強大的插座通常由框架類指定(例如,UIViewController的視圖插座或NSWindowController的窗口插座)。
一般而言,除了避免保留週期外,您不必使用弱。也就是說,只要你沒有兩個對象強相互引用,你會沒事的。
當您希望該類保留對某個對象的所有權並因此防止該對象被釋放直到該類不再需要時使用強引用。它通常用於無法便宜複製的對象(例如從服務器下載的數據)或在課堂操作中至關重要的事物。
當您需要對象的引用時,使用弱引用。如果對象被其所有者解除分配,該對象將會消失。這通常用於循環引用,而不用擔心未釋放的對象。
- 1. NSDictionary + ARC +複製與參考
- 2. 自動參考計數(ARC)對內存泄漏的影響
- 3. Wakelock參考計數
- 4. COM參考計數
- 5. iOS發佈參考iPhoneContactList與ARC
- 6. 獲取監視器計數
- 7. 參考其計數器值
- 8. 無鎖參考計數
- 9. 微星參考計數
- 10. 參考計數器和RVO
- 11. iOS - 參考計數問題
- 12. Delphi界面參考計數
- 13. Apple Instruments - 參考計數
- 14. 引用計數在ARC
- 15. 引用計數,ARC
- 16. 在ARC中輸出參數Objective C
- 17. UX設計參考
- 18. 參考監視器VS.系統調用包裝
- 19. 參考參數
- 20. 參考參數
- 21. 參考enum中的參數
- 22. Python中的參考參數
- 23. 獲取參考監督嵌套演員
- 24. 如何祕密監視回調參數
- 25. 性能監視計數器閾值
- 26. Scanf - 每參考VS參數參考
- 27. C++參考和參考參數
- 28. 作用域/參考計數迭代器
- 29. 按參考計數排序php
- 30. Sharepoint計算字段函數參考
看起來像沒有工具來監視參考計數器。你能告訴我哪個對象/視圖控制器或其他東西會被蘋果自動保留嗎?謝謝 ! –
是的,retainCount方法在ARC中不可用(但由於您沒有手動保留和釋放,所以它不再那麼必要)。 iOS保留的東西的例子包括通過'pushViewController'或'presentViewController'添加到視圖控制器層次結構中的視圖控制器,使用'addSubview'將子視圖或控件添加到'UIView',或者當你添加一些東西到'NSArray'或'NSDictionary'。 – Rob