我有一个已在App Store中发布的应用程序。大概有1% - 2%的用户报告应用程序崩溃。这并非完全出乎意料的行为,所以我要求提供崩溃日志。这是最后一个异常回溯(实际显示问题的部分):
Last Exception Backtrace:
0 CoreFoundation 0x2ecc5e7e __exceptionPreprocess + 126
1 libobjc.A.dylib 0x390226c2 objc_exception_throw + 34
2 CoreFoundation 0x2ecc97b2 -[NSObject(NSObject) doesNotRecognizeSelector:] + 198
3 CoreFoundation 0x2ecc80aa ___forwarding___ + 702
4 CoreFoundation 0x2ec16dc4 __forwarding_prep_0___ + 20
5 MyAppName 0x000874d0 0x6c000 + 111824
6 UIKit 0x3157c310 -[UITableView _createPreparedCellForGlobalRow:withIndexPath:] + 404
7 UIKit 0x315246c8 -[UITableView _updateVisibleCellsNow:] + 1796
8 UIKit 0x31523eec -[UITableView layoutSubviews] + 180
正如您所看到的那样,问题出现在第2行,NSObject(NSObject)会执行NotRecognizeSelector。
这告诉我发生了什么,但显然不是在哪里或什么。所以转到第5行,这是我的应用程序调用一个未知的方法。出于某种原因,这不是象征性的。似乎这种方法可能是导致问题的原因。
每一份报告(我现在大约有10份报告)与此相同。知道我怎么能看到正确的符号吗?谢谢!
答案 0 :(得分:0)
我以前曾经历过此类崩溃。
在所有情况下都是由于数据类型问题造成的。
例如,尝试在另一种数据类型上调用特定于一种数据类型的方法。
即
试图在字典上调用 integerValue 方法,或者试图在字符串上调用 length 方法,但从本质上讲,这是一个字典,因此与 [NSObject]崩溃doesNotRecognizeSelector:]:
最好检查数据类型并在对象上调用方法,以避免发生此类崩溃。
当我们调用API时,它很容易发生,因为有时API可能返回错误的数据类型或意外的响应。