NSArray *t_annos;
@try
{
NSLog(@" --- pointer before = %ld --- ", (long) t_annos);
t_annos
= [NSKeyedUnarchiver unarchiveObjectWithFile : d_path];
NSLog(@" --- pointer after = %ld --- ", (long) t_annos);
}
@catch (NSException *e)
{
NSLog(@" --- e caught ---");
t_annos = nil;
}
Пожалуйста, обратите внимание на приведенные выше утверждения, ситуация такова:
1
Согласно документации, следует создать исключение, если d_path не указывает на действительный архив.Но исключение не выявляется, даже если d_path намеренно установлен с неверным путем.
2
Протестировал код как на симуляторе xcode, так и на тестовом устройстве (iphone).Хотя и симулятор, и устройство телефона не улавливают никаких исключений, телефон разархивирует массив, как и ожидалось, в то время как на симуляторе программа останавливается с выводом: «Программа получила сигнал:« EXC_BAD_ACCESS »» на консоли отладчика.
3
Ошибка «плохой доступ» должна была появиться в операторе «unarchiveObjectWithFile», так как программа останавливается после первого вывода NSLog.
4
При попытке заархивировать и разархивировать один объект NSString у симулятора и тестового устройства проблем нет.Но по-прежнему нет исключений, даже если путь неправильный.
Может быть, с моей стороны чего-то не хватает, надеюсь, что кто-то, кто знает, может помочь.