Сбой drawWithRect с точкой останова исключения в iOS 8 (не происходит сбой без точки останова исключения)
С праздником iPhone всех! Я надеюсь, что всем удалось достать один.
У меня странная проблема. В моем коде у меня есть UITableView
и если пользователь выбирает значок электронной почты в UINavigationBar
, он делает две вещи:
1) Открывает MFMailComposer
2) Создает PDF в фоновом режиме содержимого UITableView
и прикрепляет его к электронной почте
До сих пор это работало очень хорошо в iOS 7. В iOS 8, если я установил точку останова исключения в своем коде и запустил ее на устройстве iOS 8, он потерпит крах, когда я нажму значок электронной почты (iPhone 5s), указывая на код ниже:
[strheader drawWithRect:CGRectMake(65, -670, 1024, 100) options:NSStringDrawingUsesLineFragmentOrigin attributes:@{NSFontAttributeName:headerFont} context:nil];
Это не позволяет мне прыгать или выходить из этой точки останова или делать что-либо, чтобы выяснить, что происходит. Если я удалю точку останова Exception, сбой не произойдет. Если я запускаю приложение на своем устройстве и отключаю устройство от Xcode, запускаю его снова, сбоя нет.
В конечном счете, при запуске моего приложения не происходит сбоев, но я очень нервничаю, что с точкой останова исключения происходит сбой в том коде выше, что означает, что где-то что-то не так.
В моем коде нет предупреждений. Метод сохранения PDF в электронном письме (который содержит этот код) очень длинный; если это потребуется, я вставлю это сюда, но я не хочу делать этот вопрос дольше, чем нужно.
Если я удаляю точку останова исключения из этой строки и просто устанавливаю обычную точку останова, как и ожидалось, она останавливается в этой точке. Я пробегаю и ошибок нет вообще. Если я пробегаю всю точку останова, он делает то, что ему нужно, а затем показывает MFMailComposer
в приложении. Так что на самом деле это не "сбой", но у точки прерывания исключения явно есть проблема.
Как я могу узнать, ПОЧЕМУ это терпит крах? Что еще более важно, как я могу это исправить? (который, вероятно, будет отвечать только после получения ответа на первый вопрос).