Я подозреваю, что внутренности CoreAnimation C ++ (о чем свидетельствуют обратные следы) отвечают за проглатывание исключений, которое вы заметили (или, скорее, я не думаю, что NSTimer проглатывает исключения); Обратные вызовы CoreAnimation (вызванные из +[UIView setAnimationDidFinishSelector:]
или, возможно, даже -viewDidAppear:
при анимации), похоже, делают то же самое, за исключением того, что, я думаю, они печатали сообщение журнала. Я не уверен, почему Apple выбрала проглатывание исключений в предпочтении обработке исключений; да ладно.
Единственный способ сделать то, что вы спрашиваете, насколько я знаю,
@try
{
...
}
@catch(...)
{
abort();
}
Не сильно помогаю, я знаю. Две другие вещи, которые могут помочь: