2016-12-15 83 views
1

我收到了我的應用程序的崩潰報告,這似乎是在滾動UICollectionView時發生的。這是一個很少發生的崩潰,並且當我設法在Xcode中捕獲它時,也不知道導致它的代碼片段。我UICollectionView基本上看起來像一個UITableView有三種不同類型的細胞 - 一個帶有UILabel中,一個在一個UIImageViewUILabel,和一個在一個AVPlayerUILabel- [CALayer setFrame:] crash

這是崩潰日誌:

-[__NSArrayM setBounds:]: unrecognized selector sent to instance 0x1744478c0 

Fatal Exception: NSInvalidArgumentException 
0 CoreFoundation     0x18ecb61c0 __exceptionPreprocess 
1 libobjc.A.dylib    0x18d6f055c objc_exception_throw 
2 CoreFoundation     0x18ecbd278 __methodDescriptionForSelector 
3 CoreFoundation     0x18ecba278 ___forwarding___ 
4 CoreFoundation     0x18ebb459c _CF_forwarding_prep_0 
5 QuartzCore      0x191fc625c -[CALayer setFrame:] 
6 QuartzCore      0x191fc2e64 CA::Layer::layout_if_needed(CA::Transaction*) 
7 QuartzCore      0x191fc2d24 CA::Layer::layout_and_display_if_needed(CA::Transaction*) 
8 QuartzCore      0x191f3f7ec CA::Context::commit_transaction(CA::Transaction*) 
9 QuartzCore      0x191f66c58 CA::Transaction::commit() 
10 MediaToolbox     0x195b5013c playerremote_Invalidate 
11 MediaToolbox     0x195bd5ca4 playerasync_InvalidateOnQueue 
12 libdispatch.dylib    0x18db411c0 _dispatch_client_callout 
13 libdispatch.dylib    0x18db4f444 _dispatch_queue_serial_drain 
14 libdispatch.dylib    0x18db449a8 _dispatch_queue_invoke 
15 libdispatch.dylib    0x18db4f940 _dispatch_queue_override_invoke 
16 libdispatch.dylib    0x18db5138c _dispatch_root_queue_drain 
17 libdispatch.dylib    0x18db510ec _dispatch_worker_thread3 
18 libsystem_pthread.dylib  0x18dd4a2b8 _pthread_wqthread 
19 libsystem_pthread.dylib  0x18dd49da4 start_wqthread 

我該如何解決這個問題?

+0

你可以設置異常斷點並添加崩潰方法嗎? –

+0

檢查https://www.natashatherobot.com/xcode-debugging-trick/ –

+0

要進行調試,請使用[啓用殭屍]運行您的應用程序(http://help.apple.com/xcode/mac/8.0/#/ devcef23c572)。 –

回答

0

您可以用符號表示崩潰報告,它實際上會將變量中的內存地址轉儲加載,並且可以確定此次崩潰的原因。您必須擁有構建的DSYM目錄,因爲該目錄具有調試符號的引用,這些符號將用於表示崩潰報告數據。

+0

所以我可以象徵它,以便它加載到Xcode中,並加載在崩潰時創建的所有線程。但是,如何從它中「識別崩潰的原因」?我看不到任何內存地址 – Tometoyou

+0

是的,當崩潰報告被符號化時,所有內存地址,堆棧,變量等都被加載,我們可以在正常例程中調試應用程序時進行調試。你可以檢查所有的對象,變量,數組等,這將幫助你識別崩潰。 ' - [__ NSArrayM setBounds:]:發送到實例0x1744478c0'的無法識別的選擇器。很明顯,在被'UICollectionView'或'UITableView'訪問時,數組是'nil' –

+0

它們在哪裏加載?我看不到任何地方訪問內存地址或對象! – Tometoyou