是否有可能跟蹤我的Objective-C對象的分配和釋放?例如,如果我有一個Book類,我想跟蹤Book類型的所有對象的分配和釋放。我可以跟蹤所有默認的SKD類,比如UIViewController,UIWindow,UIView,NSDictionary和所有這些,但我想跟蹤從我定義的類創建的對象。儀器分配跟蹤用戶定義類的對象的alloc和dealloc
55
A
回答
212
您可以使用Allocations工具來跟蹤對象的生命週期。如果使用「分配」模板,則將其配置爲記錄malloc
和free
事件。您可能希望通過在分配儀器設置開啓「記錄引用計數」複選框,將其配置爲記錄retain
,release
和autorelease
事件:
(您不能切換此同時儀器被記錄,它只要你選擇你的模板默認啓動)
更新Xcode的9:蘋果已經變得更加難以找到這些設置。現在您需要選擇Allocations樂器,然後從菜單欄中選擇File> Recording Options。
跑步結束後,你可以找到使用分配>屬性>對象摘要視圖,這對於詳細信息窗格中的默認設置(窗口的下半部分)你的對象:
如果你想看到你停止運行之前已被釋放的對象,您需要更改配置壽命從「創建&仍住」設置(默認)「所有對象創建」:
要查找特定類的對象,請首先在窗口工具欄右端的搜索字段中輸入類名。然後在列表視圖的類別列中找到類名稱,將鼠標懸停在列表視圖上,然後單擊其旁邊的箭頭。例如,我的應用程序有一個名爲Tile
類,所以我尋找那個,然後單擊列表視圖旁邊Tile
箭頭:
現在列表視圖中顯示的Tile
每個實例。 (請注意,您必須輸入對象的實際類,而不是超類。輸入NSObject
將只能找到由[NSObject alloc]
創建的對象,而不是由[Tile alloc]
創建的對象。)通過單擊可以查看任何特定實例的歷史記錄旁邊的箭頭,該實例的地址:
在一個對象的詳細視圖,我可以看到malloc
和free
事件和,因爲我打開「記錄的引用計數」,我也能看到retain
,release
和autorelease
消息及其對對象的保留計數的影響。如果我想看到任何這些事件的調用堆棧,我可以在窗口的右側打開擴展詳細信息面板:
相關問題
- 1. 跟蹤assinged對象分配
- 2. iOS:分配對象的跟蹤量
- 3. 跟蹤所有Objective-C的分配/ allocWithZone/dealloc的
- 4. 如何解釋儀器中的分配和VM跟蹤器的結果?
- 5. 用戶定義的類對象的堆棧分配
- 6. 跟蹤對象和引用
- 7. 增加儀器中的對象分配
- 8. iphone上的對象分配儀器
- 9. 跟蹤Facebook分析儀表板中的自定義事件
- 10. 分配跟蹤器中「分配大小」的含義
- 11. 定義和跟蹤
- 12. 的dealloc自定義對象的
- 13. 構建自定義印象跟蹤器
- 14. Xcode儀器跟蹤比較
- 15. 儀器中的VM跟蹤器爲空
- 16. 跟蹤主動分配不能在儀器選擇
- 17. 如何使用xperf的堆分析工具來跟蹤自定義分配器?
- 18. 的OpenCV和Python:對象跟蹤和保存對象被跟蹤爲圖像
- 19. Android - 內存分配跟蹤器沒有跟蹤我的測試分配
- 20. dealloc +%alloc()vs%realloc() - RPGLE
- 21. 分配跟蹤器已禁用
- 22. Spring容器中的跟蹤對象
- 23. 關於Ruby ObjectSpace對象分配跟蹤的說明?
- 24. 跟蹤對象中的特定值
- 25. JDBC,用戶定義的對象和用戶定義對象的數組列表
- 26. 如何訪問跟蹤器(antonioribeiro /跟蹤器)對象在Laravel
- 27. 如何應用服務器跟蹤的HttpSession對象和客戶的?
- 28. javascript中的對象檢測和跟蹤
- 29. 跟蹤深度的對象
- 30. OpenCV中的對象跟蹤
這是一個真棒文章。交互式圖像+1。你用什麼應用程序來創建這些截圖? – gyurisc 2013-06-26 11:03:05
我使用ScreenFlow來記錄屏幕並編輯每個視頻的長度和大小。然後我使用Photoshop將每個視頻轉換爲動畫GIF。 – 2013-06-26 16:03:37
@robmayoff fabulas工作,像你這樣的人正在幫助ios社區學習越來越多。 – Alok 2013-08-01 07:13:34