當我想檢查內存問題時,什麼是Cocoa類在ARC下解除分配的最快方法,在我自己的類中?在- (void) dealloc;
方法中放入一個NSLog,所以我知道它何時解除分配。但是對於像NSArray這樣的Obj-C類,我怎麼知道它何時解除分配?如果我將類設置爲零,還需要ARC,它是否會自動從內存中刪除它?Obj-C:檢查內存泄漏 - 如何知道Cocoa對象何時從內存中移除自己
1
A
回答
6
您可以使用樂器中的Allocations樂器來了解什麼時候某個類(任何類)被釋放。這是更好的方式。但是,仍然可以在ARC下覆蓋dealloc並記錄消息。不同的是,當你重寫dealloc時,你不能調用[super dealloc]
(編譯器會爲你處理)。
如果您發送消息給解除分配的實例造成問題,請在樂器中使用殭屍樂器。它會告訴你何時發送了一個釋放對象的消息,允許你看到有問題的調用堆棧以及消息對象的分配/保留/釋放/釋放歷史記錄。
在ARC下,您不應該考慮確切的對象生命週期以及所有權語義。也就是說,當你在ARC下設置一個強變量爲零時,被引用的對象被釋放。是否解除分配(即「從存儲器中刪除本身」)取決於其他對象是否有強烈的引用。另外,如果它位於任何autorelease池中,它將不會被釋放,直到池消失(在ARC和MRC下都爲真)。同樣,使用分配工具可以發現任何特定情況下發生的細節。
相關問題
- 1. 修復Cocoa/ObjC中的內存泄漏
- 2. Xcode內存泄漏檢查
- 3. C++內存泄漏檢查
- 4. 檢查內存泄漏
- 5. 內存泄漏 - SQLCommand對象?
- 6. 對象內存泄漏
- 7. 檢測內存泄漏計算對象
- 8. 自動化對象泄漏內存(TConnectionPoints)
- 9. GQL查詢對象內存泄漏
- 10. iOS9如何知道我是否在運行時泄漏內存?
- 11. 內存泄漏沒有檢測到CRT內存泄漏檢測
- 12. 如何檢測j2me內存泄漏?
- 13. 如何檢測內存泄漏
- 14. 如何檢測內存泄漏?
- 15. valgrind如何檢測內存泄漏
- 16. C++內存泄漏,如何檢測
- 17. 未知的內存泄漏
- 18. qt_creator中檢查內存泄漏
- 19. 在valgrind中檢查到內存泄漏
- 20. 內存泄漏3.0.11遷移
- 21. Cocoa垃圾收集泄漏內存
- 22. 如何查找javascript內存泄漏
- 23. 檢測Android內存泄漏
- 24. 內存泄漏檢測器
- 25. VisualVM內存泄漏檢測
- 26. 檢測Ruby內存泄漏
- 27. Tomcat7檢測內存泄漏
- 28. 檢測內存泄漏
- 29. 檢測TWebModule內存泄漏
- 30. 刪除[]和內存泄漏