从调用 registerAsSystemApp iOS 11.3 崩溃
Posted
技术标签:
【中文标题】从调用 registerAsSystemApp iOS 11.3 崩溃【英文标题】:Crash from call registerAsSystemApp iOS 11.3 【发布时间】:2018-07-05 23:03:33 【问题描述】:我有自定义类:UIApplication
在 main.m 中
retVal = UIApplicationMain(argc, argv, NSStringFromClass([CustomClass class]), NSStringFromClass([AppDelegate class]));
当我在 ios 11.2.2 中启动时,没关系。如果我在 iOS 11.3 beta 中启动应用程序崩溃的原因:
+[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自定义类
.h
@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>
【问题讨论】:
你能显示你的CustomClass
吗?
@lee 这个类有 325 行。具体需要展示什么?唯一有时间从自定义类调用它:+ (void)load // Installing handler in app's delegate do not allow to intercept uncaught exceptions thrown by init method. InstallUncaughtExceptionHandler();
假设您是调用 registerAsSystemApp
的人,首先检查该类是否响应该选择器。
我在考虑运行时检查,例如:if ([[CustomClass class] respondsToSelector:@selector(registerAsSystemApp)])
。
那么,您是说if ([[CustomClass class] respondsToSelector:@selector(registerAsSystemApp)]) [CustomClass registerAsSystemApp];
以同样的方式崩溃?即使对于私有 API,这听起来也像是一个错误。
【参考方案1】:
问题是我在项目中的班级被命名为MBApp
(这是CustomClass),事实证明这个名字与来自MobileBackup.framework
的一个已经有这个班级的班级相交。所以registerAsSystemApp
这个方法是从MobileBackup.framework
中调用的,自然没有找到。也就是说,我的解决方案是更改我的 MBApp
类的名称。唯一的困惑是为什么它以前没有发生过,因为带有该类的库在 iOS 5 中存在。感谢所有的帮助,很抱歉我没有写原始的类名,因为这是机密信息。
【讨论】:
以上是关于从调用 registerAsSystemApp iOS 11.3 崩溃的主要内容,如果未能解决你的问题,请参考以下文章
1、编写一个程序实现如下功能,要求调用函数实现。 1)从键盘上输入10个整数存入一数组中,将它们按照从