2014-02-24 59 views
2

我的代码如下所示:可能崩溃:无法识别的选择

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的用户在上面评论码。

我很惊讶高度不是568,5/5s,因为我的应用只支持纵向。我有数百名活跃用户,仅有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] 

的崩溃报告链接显示的原因,但我想不出为什么,因为我只用内置的UILabel,的UIImageView,UITextView的在笔尖文件。

任何人都可以给我一些建议,以更好地检查,如果在越狱设备上使用4英寸的屏幕? 第二个问题是什么导致loadNibNamed内部崩溃?

+0

您的应用程序的性质可能会吸引喜欢越狱手机的相同类型的用户吗?很难想象越狱是导致这次事故的原因。 – Nate

+0

我不这么认为。只有不到10%的其他崩溃来自越狱手机。 – benck

+0

今天还有一些崩溃,他们都来自越狱手机。 HTTP://崩溃。到/ s/1ddc169b801 – benck

回答

0

使用UIScreen mainScreen

CGRect screenBounds = [[UIScreen mainScreen] bounds]; 
if (screenBounds.size.height == 568) { 
// code for 4-inch screen 
} else { 
// code for 3.5-inch screen 
} 

我认为它没有任何与JB。

+0

我想我上面的代码和你的代码是一样的... – benck

+2

我不知道它是否相关,但是在你的代码中你会比较浮动(height == 568.0)。你不应该这样做:在这两种情况下使用整数((int)screenBounds.size.height == 568) – Qualcuno

0

建议1:

  • 不等同浮球随568.0f。只是检查它是否大于 567且小于1024

建议2:

+0

我不认为if语句是导致崩溃的原因。我有同样的崩溃,但我只加载表格单元格的.xib。 – Darren

2

我怀疑Cydia调整“Eclipse”有一个过度发布的bug。 (Eclipse.dylib已列在您的崩溃追踪中)

您的NIB中的UIView实例正在释放,并且内存被重新用于UIDeviceRGBColor实例。

看看你是否可以用Cydia Eclipse添加?你可以跟踪你的分配与仪器。

+0

我发送了一封电子邮件给列出的Eclipse作者..我会告诉你他是否回应。我无法在任何地方找到它的源代码。 – nielsbot

+0

也许你可以拒绝加载,如果库Eclipse.dylib也加载 – nielsbot

+0

这是一个有趣的想法。我们甚至会开始发现它呢?也许可能只是抛出一条消息。 – Darren

相关问题