Мой код выглядит следующим образом:
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 аварии произошли у 4 пользователей.
И даже если устройство 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 в файле nib.
Может ли кто-нибудь дать мне несколько советов, чтобы лучше проверить и использовать ли 4-дюймовый экран на устройствах для джейлбрейка? Второй вопрос: что вызвало сбой внутри loadNibNamed?