2015-11-17 5 views
1

Рассмотрите следующий фрагмент, который пытается создать NSKeyedUnarchiver из недопустимого объекта NSData.Неужели NSKeyedUnarchiver все еще бросает исключения в iOS9?

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

Когда я бегу это на IOS 8.4 тренажере, я получаю NSInvalidArgumentException. Однако на симуляторе iOS 9.1 инициализатор просто возвращает nil.

Однако, согласно do official docs, метод должен всегда исключить неверные данные.

Этот метод генерирует исключение, если данные не являются допустимым архивом.

Почему это исключает только iOS8, но не на iOS9? Является ли это новое поведение в iOS 9, которое еще не задокументировано?

ответ

2

Да, подтвержденные устройства iOS 9 (не уверены в симуляторе) выдают исключение при определенных обстоятельствах. Вот пример исключения, который я сейчас изучаю.

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

Странно, может быть, тогда это симулятор. У меня нет исключений. – hennes

 Смежные вопросы

  • Нет связанных вопросов^_^