大家好,我为我的应用部署了一个更新,很少有用户抱怨/坏评论等关闭他们的应用程序。
一位用户向我发送了崩溃报告,我重新对其进行了符号化,并显示了崩溃的方法和行号。
我尝试了很多可能的解决方案,但对于我的生活,我无法在我的设备上重现它。
有没有人可以帮助我,让我知道以下代码中的问题可能会导致应用程序崩溃:
它没有崩溃的线是m:555,即
NSAttributedString *attributedText = [[NSAttributedString alloc] initWithString:text attributes:@{NSFontAttributeName: font}];
我不确定问题是什么,我试过传递@“”为空内容仍然没有崩溃。
-(CGFloat)getCellHeightForContent:(NSString*)content
{
NSString *text = content;
CGFloat width = self.tableview.frame.size.width - 15 - 30 - 15; //tableView width - left border width - accessory indicator - right border width
UIFont *font = [UIFont systemFontOfSize:17];
NSAttributedString *attributedText = [[NSAttributedString alloc] initWithString:text attributes:@{NSFontAttributeName: font}];
CGRect rect = [attributedText boundingRectWithSize:(CGSize){width, CGFLOAT_MAX}
options:NSStringDrawingUsesLineFragmentOrigin
context:nil];
CGSize size = rect.size;
size.height = ceilf(size.height);
size.width = ceilf(size.width);
if ((size.height )+ 5 < 70) {
return 70;
}
return size.height + 15;
}
这是崩溃报告
Incident Identifier: CAB2B27B-F65F-4F8A-82C6-C1AECD791335
CrashReporter Key: 759ffd08fa781ee7b8ae9515835758c563110d7f
Hardware Model: iPhone5,1
Process: xxxx [9226]
Path: /var/mobile/Applications/AA5E7A52-ED1E-421F-B377-CF32D55E71EA/xxxx.app/xxxx
Identifier: com.xxxx.xxxx
Version: 7.0.1 (7.0.1)
Code Type: ARM (Native)
Parent Process: launchd [1]
Date/Time: 2014-06-18 22:09:44.336 -0400
OS Version: iOS 7.1.1 (11D201)
Report Version: 104
Exception Type: EXC_CRASH (SIGABRT)
Exception Codes: 0x0000000000000000, 0x0000000000000000
Triggered by Thread: 0
Last Exception Backtrace:
0 CoreFoundation 0x2e33bf06 0x2e267000 + 872198
1 libobjc.A.dylib 0x38ad2ce2 0x38acf000 + 15586
2 CoreFoundation 0x2e33be48 0x2e267000 + 872008
3 Foundation 0x2ec72bd0 0x2ec57000 + 113616
4 Foundation 0x2ec72aac 0x2ec57000 + 113324
5 xxxx 0x00073850 -[DetailVC getCellHeightForContent:] (DetailVC.m:555)
6 xxxx 0x000725b4 -[DetailVC tableView:heightForRowAtIndexPath:] (DetailVC.m:382)
7 UIKit 0x30c7b1ae 0x30b60000 + 1159598
8 UIKit 0x30c3fd92 0x30b60000 + 916882
9 UIKit 0x30c41b6c 0x30b60000 + 924524
10 UIKit 0x30c41ac0 0x30b60000 + 924352
11 UIKit 0x30c416ba 0x30b60000 + 923322
12 xxxx 0x00070c4c -[DetailVC viewDidLoad] (DetailVC.m:157)
13 UIKit 0x30b6fa4e 0x30b60000 + 64078
14 UIKit 0x30b6f80c 0x30b60000 + 63500
15 UIKit 0x30cfbc0e 0x30b60000 + 1686542
16 UIKit 0x30c1948a 0x30b60000 + 758922
......
提前感谢您的帮助!!
答案 0 :(得分:2)
由于崩溃报告未完全符号化,并且报告中未显示异常原因,因此以下仅为假设:
你说第555行引用了这段代码:
NSAttributedString *attributedText = [[NSAttributedString alloc] initWithString:text attributes:@{NSFontAttributeName: font}];
导致异常可能是因为text
是nil
。
您应该尝试获取完全符号化的崩溃报告。这要求你的Mac拥有armv7s或armv7的iOS 7.1.1的iOS符号。通过连接iPhone 5或iPad 3以及运行到Mac的iOS 7.1.1,您可以获得这些符号。如果你不能这样做,请在某个地方提供完整的崩溃报告,并且这次我将为你进行符号化。
如果您收到的崩溃报告也显示异常原因,那就更好了,但通常Apple报告不包含该报告,因此将第三方崩溃报告功能集成到您的应用中可能会有所帮助。 (不要求建议,因为我有偏见,大多数答案也会有偏见,而是自己测试并明智地选择)。