2013-07-26 78 views
2

我有一個iOS應用程序,並且我收到了相當數量的此崩潰。 而且它似乎與我的代碼無關。你有什麼想法,爲什麼應用程序可以因此崩潰。有什麼我可以做,以防止這些崩潰。__dispatch_call_block_and_release上的崩潰

Thread 9 Crashed: 
1 libobjc.A.dylib  _objc_msgSend + 16 
2 libdispatch.dylib __dispatch_call_block_and_release + 13 
3 libdispatch.dylib __dispatch_queue_drain + 239 
4 libdispatch.dylib __dispatch_queue_invoke$VARIANT$mp + 41 
5 libdispatch.dylib __dispatch_worker_thread2 + 211 
6 libsystem_c.dylib __pthread_wqthread + 295 
+0

這似乎是一個多線程問題,與GCD有關的問題。您是否正在使用任何外部庫或其他使用GCD或您自己的應用程序中使用GCD的應用程序? –

+0

無代碼此qn將沒有好的答案 –

+0

其實這就是問題所在。崩潰報告不會在我的代碼中發生任何事情。我不知道,我怎麼能檢測到它。我想我必須檢查代碼中的每一個調度調用。在我使用的某些地方,在某些情況下,外部圖書館正在使用GCD。特別是sdwebimage圖書館。 – hakansaglam

回答

2

GCD在您的應用中使用。所以.. 請帶更多的細節信息?代碼在哪裏發生? 可能是你需要複製塊vs保留,可能是你需要正確使用__block變量。可能是別的。很明顯,當你的對象被block捕獲時被釋放,並在queue_drain發生時釋放,之後你調用其他作用域或塊範圍內的對象的方法。

+0

其實這就是問題所在。崩潰報告不會在我的代碼中發生任何事情。我不知道,我怎麼能檢測到它。我想我必須檢查代碼中的每一個調度調用。 – hakansaglam

+0

@hakasaglam崩潰正在調用您的代碼塊。所以不要說你不知道它在哪裏發生。發佈代碼創建和分派塊。 – pjcabrera