1

考虑以下尝试NSKeyedUnarchiver从无效NSData对象创建的片段。

NSData *data = [@"foo" dataUsingEncoding:NSUTF8StringEncoding];
NSKeyedUnarchiver *unarchiver = [[NSKeyedUnarchiver alloc] initForReadingWithData:data];

当我在 iOS 8.4 模拟器上运行它时,我得到一个NSInvalidArgumentException. 然而,在 iOS 9.1 模拟器上,初始化程序只返回nil.

但是,根据官方文档,该方法应始终对无效数据抛出异常。

如果数据不是有效的存档,此方法将引发异常。

为什么它只在 iOS8 上抛出异常而不在 iOS9 上抛出异常?iOS 9 中的这种新行为是否还没有记录?

4

1 回答 1

2

是的,已确认的 iOS 9 设备(不确定模拟器)在某些情况下会抛出异常。这是我目前正在研究的一个示例异常。

NSInvalidArgumentException
Description: *** -[NSKeyedUnarchiver initForReadingWithData:]: incomprehensible archive (0x2d, 0xffffffa4, 0xffffffb3, 0x44, 0xffffffbe, 0xffffff89, 0xffffffcb, 0xffffffcf)
于 2015-12-08T00:16:23.953 回答