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 に答える