2014-07-12 85 views
0

任何人都可以帮助我理解此崩溃日志。 这次崩溃似乎是偶然的,我无法在我的测试设备上重现它。 感谢无法理解崩溃报告

Thread : Fatal Exception: NSInvalidArgumentException 
0 CoreFoundation     0x2faa6f0b __exceptionPreprocess + 130 
1 libobjc.A.dylib    0x3a56dce7 objc_exception_throw + 38 
2 CoreFoundation     0x2faaa837 -[NSObject(NSObject) doesNotRecognizeSelector:] + 202 
3 CoreFoundation     0x2faa9137 ___forwarding___ + 706 
4 CoreFoundation     0x2f9f8098 _CF_forwarding_prep_0 + 24 
5 UIKit       0x322e58b7 -[UILabel _shadow] + 38 
6 UIKit       0x32355557 -[UILabel drawTextInRect:] + 66 
7 UIKit       0x3235550b -[UILabel drawRect:] + 78 
8 UIKit       0x323554a9 -[UIView(CALayerDelegate) drawLayer:inContext:] + 372 
9 QuartzCore      0x31f81189 -[CALayer drawInContext:] + 100 
10 QuartzCore      0x31f6ac5b CABackingStoreUpdate_ + 1858 
11 QuartzCore      0x32046c1d ___ZN2CA5Layer8display_Ev_block_invoke + 52 
12 QuartzCore      0x31f6a50b x_blame_allocations + 82 
13 QuartzCore      0x31f6a1bf CA::Layer::display_() + 1118 
14 QuartzCore      0x31f4dd41 CA::Layer::display_if_needed(CA::Transaction*) + 208 
15 QuartzCore      0x31f4d9d9 CA::Layer::layout_and_display_if_needed(CA::Transaction*) + 24 
16 QuartzCore      0x31f4d3e5 CA::Context::commit_transaction(CA::Transaction*) + 228 
17 QuartzCore      0x31f4d1f7 CA::Transaction::commit() + 314 
18 QuartzCore      0x31f46f1d CA::Transaction::observer_callback(__CFRunLoopObserver*, unsigned long, void*) + 56 
19 CoreFoundation     0x2fa72039 __CFRUNLOOP_IS_CALLING_OUT_TO_AN_OBSERVER_CALLBACK_FUNCTION__ 
20 CoreFoundation     0x2fa6f9c7 __CFRunLoopDoObservers 
21 CoreFoundation     0x2fa6fd13 __CFRunLoopRun + 738 
22 CoreFoundation     0x2f9da769 CFRunLoopRunSpecific + 524 
23 CoreFoundation     0x2f9da54b CFRunLoopRunInMode + 106 
24 GraphicsServices    0x349046d3 GSEventRunModal + 138 
25 UIKit       0x32339891 UIApplicationMain + 1136 
26 Oremia Mobile HD    0x00110ee7 main (main.mm:16) 
27 libdyld.dylib     0x3aa6bab7 start + 2 
+1

也许UI从某个后台线程更新?基于回溯真的很难说。 – kambala

+0

什么是异常消息? UILabel的文本来自哪里:静态字符串,JSON数据,...? – Kerni

+0

完整的回溯在这里http://crashes.to/s/721fcce12a6 – Yann86

回答

0

某处你通话时长的方法来NSNull对象不具有此方法。

- [NSNull长]:无法识别的选择发送到实例0x3ad30a60

+0

是什么让你这么想?在backtrace中没有这样的东西 – kambala

+0

http://crashes.to/s/721fcce12a6(我认为,你将NSNull设置为UILabel文本属性......但我不确定) – Igor

+0

那么可能这意味着一个释放的' NSString'对象发送'length'消息 – kambala

1

这只是一个猜测,因为没有什么是你的代码做了足够的信息。无论如何,从后面的跟踪我可以假设你从某个地方接收/获取某些数据,然后解析接收到的数据并尝试将其呈现在视图中。您传递给视图的对象具有一些属性,您可以将其分配给您的标签,而且该属性包含NSNull对象而不是有效的NSString/NSAttributed应该传递给UILabel的字符串。因此,当UILabel发送length消息到NSNull您收到崩溃。

所以可能你转换器设置NSNull的属性,没有收到或空白。

如果您设置了视图数据并查看是否有任何属性有NSNull而不是有效字符串,请尝试在该位置放置断点。

0

由于无效数据在drawTextInRect方法内传递,因此发生崩溃,只需放置断点并进行检查即可。如果仍然不起作用,请在xcode设置中启用NSZombie,然后检查控制台日志。

0

看起来您已将标签的文本(似乎来自某个Web服务)设置为[NSNull null]。检查响应,并在将文本设置到该标签之前添加一个断点,并查看您实际尝试设置的内容。这可能在某些用作观察者回调的方法中。