我在iOS應用程序中有一些粉碎。經過調查,我發現問題是一些懸掛指針。要找到它來自哪裏我已經開始使用「殭屍」跟蹤模板在模擬器(iOS 6.1)上分析代碼。故事板修改後的殭屍對象的Objective-C發佈
測試場景很簡單:選擇桌面上的某個項目,然後通過調用名稱的正確方式移動到下一個控制器,然後按回退按鈕。當「返回」動畫完成時出現粉碎。
這裏是表格形式探查與殭屍公佈的數據對象(我刪除無趣列,如:#;分類 - 總是相等的CALayer;時間戳):
Event Type RefCt Size Responsible Library Responsible Caller
Malloc 1 48 UIKit -[UIView _createLayerWithFrame:]
Retain 3 0 QuartzCore CA::Layer::insert_sublayer(CA::Transaction*, CALayer*, unsigned long)
Release 2 0 UIKit -[UIView(Internal) _addSubview:positioned:relativeTo:]
Retain 3 0 QuartzCore -[CALayerArray mutableCopyWithZone:]
Release 2 0 UIKit -[UIView(Hierarchy) bringSubviewToFront:]
Retain 3 0 QuartzCore -[CALayerArray copyWithZone:]
Release 2 0 UIKit -[UIView(Hierarchy) _makeSubtreePerformSelector:withObject:withObject:copySublayers:]
Retain 3 0 QuartzCore -[CALayerArray copyWithZone:]
Release 2 0 UIKit -[UIView(Internal) _didMoveFromWindow:toWindow:]
Retain 2 0 QuartzCore -[CALayerArray copyWithZone:]
Release 1 0 UIKit -[UIView(Hierarchy) _makeSubtreePerformSelector:withObject:withObject:copySublayers:]
Retain 3 0 QuartzCore -[CALayerArray copyWithZone:]
Release 2 0 UIKit -[UIView(Internal) _didMoveFromWindow:toWindow:]
Retain 3 0 QuartzCore -[CALayerArray copyWithZone:]
Release 2 0 UIKit -[UIView dealloc]
Release 1 0 UIKit -[UIView dealloc]
Zombie -1 0 QuartzCore CA::release_objects(X::List<void const*>*)
現在這個表不指向任何地方,以我的代碼,所有條目都與系統庫相關:UIKit或QuartzCore。所以我不能顯示我的代碼,因爲我不知道哪個部分是錯誤的,並且有很多。
當我嘗試查看更改歷史記錄時,首先提交此問題的唯一重大更改是故事板中的更改。 這很奇怪,因爲故事板的變化不應該有這樣的問題。我無法說出究竟發生了什麼變化(故事板XML非常難以閱讀)。
任何建議如何找到/解決這個問題?或者也許有人有類似的問題?
你在'viewDidAppear'方法中有一些代碼嗎? –
在表格控制器中的'viewDidAppear'只包含其他任何東西(除了[[super viewDidAppear:animated]'當然除外] –
在另一個控制器中我沒有'viewDidAppear'或'viewDidDisappear' –