【问题标题】:Does NSKeyedUnarchiver still throw exceptions in iOS9?NSKeyedUnarchiver 是否仍然在 iOS9 中抛出异常?
【发布时间】:2015-11-17 13:01:36
【问题描述】:

考虑以下 sn-p,它尝试从无效的 NSData 对象创建 NSKeyedUnarchiver

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

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

但是,根据official docs,该方法应该总是在无效数据上抛出异常。

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

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

【问题讨论】:

    标签: ios objective-c nscoding nskeyedunarchiver


    【解决方案1】:

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

    NSInvalidArgumentException
    Description: *** -[NSKeyedUnarchiver initForReadingWithData:]: incomprehensible archive (0x2d, 0xffffffa4, 0xffffffb3, 0x44, 0xffffffbe, 0xffffff89, 0xffffffcb, 0xffffffcf)
    

    【讨论】:

    • 很奇怪,也许这是一个模拟器的东西。我在那里没有例外。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-10-30
    • 2017-08-29
    • 2020-02-02
    • 1970-01-01
    • 2020-12-10
    • 2019-09-06
    • 1970-01-01
    相关资源
    最近更新 更多