提问人:Mohammed Abdul Basith 提问时间:11/8/2022 最后编辑:Mohammed Abdul Basith 更新时间:11/9/2022 访问量:78
[MyClass initWithCoder:]:发送到实例的无法识别的选择器 - 在 iOS16 上
[MyClass initWithCoder:]: unrecognized selector sent to instance - On iOS16
问:
我正在使用 [NSKeyedUnarchiver unarchiveObjectWithData:result] 方法在我的目标 c 基础应用程序中取消存档 NSData。
NSMutableArray *array = (NSMutableArray *)[NSKeyedUnarchiver unarchiveObjectWithData:result];
这在 iOS15 上运行良好。但是从 iOS16 开始,我遇到了一个崩溃,即 [MyClass initWithCoder:]: 无法识别的选择器发送到实例0x281069760。
在 iOS16 中,当我使用 NSDictionary 数组或任何系统类型(如 NSString)时,代码工作正常。但是我正在将我自己的自定义类对象添加到数组中,这就产生了问题。(更有趣的事实是,问题只存在于真实设备中,而不是模拟器中。
我可以看到unarchiveObjectWithData方法被剥夺了。所以正如 xcode 中建议的那样,现在我已经尝试过了
NSError *err;
@try {
NSMutableArray *array = (NSMutableArray *)[NSKeyedUnarchiver unarchivedObjectOfClass:[NSMutableArray class] fromData:result error:&err];
}
@catch (NSException *exception) {
NSLog(@"Exception %@", exception.reason);
}
现在我正在为我的数组获取值,错误是nil
err = 0x0000000281ff1020 domain: nil - code: 4864
在我将 iPad 更新到 iPadOS 16 之前没有任何问题。任何帮助都是值得赞赏的。
我已在此存储库中添加了此问题的源代码
答: 暂无答案
评论