Сбой из регистра вызовов AsSystemApp iOS 11.3
У меня есть CustomClass: UIApplication
в main.m
retVal = UIApplicationMain(argc, argv, NSStringFromClass([CustomClass class]), NSStringFromClass([AppDelegate class]));
Когда я запускаю в iOS 11.2.2 все нормально. Если я запускаю в iOS 11.3, бета-версия приложения вылетает по причине:
+[CustomClass registerAsSystemApp]: unrecognized selector sent to class 0x1b4ff8648
Call stack: (
0 CoreFoundation 0x00000001836bc250 <redacted> + 252
1 libobjc.A.dylib 0x00000001828845ec objc_exception_throw + 56
2 CoreFoundation 0x00000001836c9488 <redacted> + 0
3 CoreFoundation 0x00000001836c1a74 <redacted> + 1380
4 CoreFoundation 0x00000001835a7b0c _CF_forwarding_prep_0 + 92
5 UIKit 0x000000018dbcb744 <redacted> + 852
6 UIKit 0x000000018d9cc1e8 UIApplicationMain + 184
7 company.product 0x0000000100ceb264 main + 176
8 libdyld.dylib 0x0000000183021fc0 <redacted> + 4
) libc++abi.dylib: terminate_handler unexpectedly threw an exception
Не могу понять почему?
UPD в симуляторе iOS 11.3 отлично работает... но с устройства у меня вылетает
UPD2 CustomClass
.час
@interface CustomClass : UIApplication {
TCBIdleService *_idleService;
LocationManager *_locationManager;
TCBUserSession *_userSession;
}
+ (CustomClass *)sharedApp;
+ (NSString *)pushNotificationTokenKey;
- (void)loginWithUserInfo:(UserInfoMto *)userInfo;
- (void)logout;
- (void)registerPushNotifications;
.m
@interface CustomClass ()<TCBIdleServiceObserving, UIAlertViewDelegate, QCSSendListener>
1 ответ
Проблема заключалась в том, что мой класс в проекте был назван MBApp
(это CustomClass), получается, что это имя пересекается с классом из MobileBackup.framework
который уже имеет этот класс. Поэтому метод registerAsSystemApp
был вызван из MobileBackup.framework
и естественно не нашел его там. То есть решением для меня было поменять имя моего MBApp
учебный класс. Единственная загадка - почему этого не произошло раньше, поскольку библиотека с классом существует в iOS 5. Спасибо за помощь и извините, что я не написал оригинальное имя класса, потому что это конфиденциальная информация.