2016-12-15 81 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