關於EXC_BAD_ACCESS,以及解決辦法

一般出現這種問題多半是內存問題,也是最噁心的問題(尤其代碼超多的時候)。怎樣解決這些問題呢?

添加MallocStackLoggingNoCompact,NSZombieEnabled,MallocStackLogging三個變量並且值全爲YES

當出現message sent to deallocated instance的時候,是的,是某個對象release了兩次,但是到底是哪個呢?

Xcode->product->Scheme->edit Scheme,在Diagnostics選項卡,選中:Zombie Objects、Distributed Objects、Malloc Stack


運行(模擬器中),找到之前蹦了的地方,看到打印出:

message sent to deallocated instance 0x7f81edad1180


打開“活動監視器”,找到與項目對應的PID:5167


打開終端,pid和之前出問題的內存地址,用命令顯示到終端上

sudo malloc_history 5167 0x7f81edad1180



找到錯誤之前最後一個方法,結合打出內存地址,可得到錯誤地點。

這裏我的錯誤是:

點擊collctionview 進入DomesticDetailViewController,滑動DomesticDetailViewController裏的scrollerview到最下面,後pop,導致scrollView滾動還沒結束就釋放了delegate出現錯誤

解決這個問題的方法是:

釋放這個頁面的時候就將delegate釋放掉

-(void)dealloc

{

    self.scrollView.delegate =nil;

}



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章