【发布时间】:2014-03-26 05:06:49
【问题描述】:
我的代码如下所示:
CGRect screenRect = [[UIScreen mainScreen] bounds];
SomeView *infoView;
if(screenRect.size.height != 568.0){
// iPhone 5/5s users crash in the next line
infoView = [[[NSBundle mainBundle] loadNibNamed:@"SomeViews" owner:self options:nil] objectAtIndex:1];
}else{
infoView = [[[NSBundle mainBundle] loadNibNamed:@"SomeViews" owner:self options:nil] objectAtIndex:0]
}
但是,我从 Crashlytics 获得了一些针对 iPhone 5/5s 用户的崩溃报告,作为上述代码中的注释。
我很惊讶 5/5 秒的高度不是 568,因为我的应用只支持纵向。我有数百个活跃用户,只有 4 个用户发生了 12 次崩溃。
即使 iPhone 5/5s 设备加载了错误的笔尖(适用于 3.5 英寸屏幕),也不会导致崩溃。 (我刚刚测试过。)
http://crashes.to/s/1ddc169b801
Crashlytics 还向我展示了 90% 的崩溃发生在越狱设备上,这让我想知道越狱设备是否可以以任何方式改变这个值?
Fatal Exception: NSInvalidArgumentException
-[UIDeviceRGBColor superview]: unrecognized selector sent to instance 0x14732db0
0
CoreFoundation
__exceptionPreprocess + 130
1
libobjc.A.dylib
objc_exception_throw + 38
2
CoreFoundation
-[NSObject(NSObject) doesNotRecognizeSelector:] + 202
...
22
UIKit
-[NSBundle(UINSBundleAdditions) loadNibNamed:owner:options:] + 138
23
Banck
BKAddRecordPagingViewController.m line 244 // line 244 is loadNibNamed
-[BKAddRecordPagingViewController viewDidLoad]
崩溃报告链接显示了原因,但我不知道为什么,因为我在 nib 文件中只使用了内置的 UILabel、UIImageView、UITextView。
谁能给我一些建议以更好地检查是否在越狱设备上使用 4 英寸屏幕? 第二个问题是 loadNibNamed 内部崩溃的原因是什么?
【问题讨论】:
-
您的应用程序的性质是否可能会吸引喜欢越狱手机的同一类型的用户?很难想象越狱是导致这次崩溃的原因。
-
我不这么认为。只有不到 10% 的其他崩溃来自越狱手机。
-
今天还有几起死机,都是越狱手机造成的。 crashes.to/s/1ddc169b801
-
我也收到了这些崩溃报告,尽管我什至没有告诉我是哪个控制器导致了问题。我有一些加载xib的。 1 个应用显示 100% 越狱,另一个显示 33% 越狱。
-
我只从 40k 中的 24 个用户那里得到它,所以不太担心,但我很想知道原因,特别是因为它似乎也发生在没有 JB 设备上(除非他们可能有让 Crashlytics 认为他们不是 JB 的方法)。
标签: objective-c jailbreak iphone-5 uiscreen loadnibnamed