[MyClass initWithCoder:]:发送到实例的无法识别的选择器 - 在 iOS16 上

[MyClass initWithCoder:]: unrecognized selector sent to instance - On iOS16

提问人:Mohammed Abdul Basith 提问时间:11/8/2022 最后编辑:Mohammed Abdul Basith 更新时间:11/9/2022 访问量:78

问:

我正在使用 [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);
 }

现在我正在为我的数组获取值,错误是nilerr = 0x0000000281ff1020 domain: nil - code: 4864

在我将 iPad 更新到 iPadOS 16 之前没有任何问题。任何帮助都是值得赞赏的。

已在此存储库中添加了此问题的源代码

iOS16 nskeyedunarchiver xcode14 ipados16

评论

0赞 vadian 11/8/2022
这对你有帮助吗?stackoverflow.com/questions/58043107/......

答: 暂无答案