我有一個經常凍結且永久凍結的應用程序。發生這種情況時,我單擊Xcode中的暫停,並在主線程上看到它始終停在執行MOC上的獲取請求的一行代碼上。我還在左側的線程列表中看到輸出__psynch_mutexwait + 17
。這使我認爲應用程序正在死鎖或由於某種原因MOC被阻止。追蹤執行executeFetchRequest時導致凍結的塊/死鎖
我的第一本能是我可能在非主線程上執行一個獲取請求,所以我把日誌放在檢查中,但事實並非如此。所有提取都發生在主線程上。
我該如何去追蹤可能阻塞的東西?有沒有更多的東西我應該在堆棧追蹤中尋找?
這是一個問題,我設置在其他線程主線程上獲取的對象的屬性?即,主要獲取objectA
,然後將其傳遞給另一個線程,並執行如objectA.someNumber = [NSNumber numberWithInt:2]
?
是的,因爲發佈這個我意識到託管對象不是線程安全的。使用MOC的'performBlock'方法是解決這個問題的好方法。 – 2013-07-04 19:35:35