Есть ли способ поймать или обработать EXC_BAD_ACCESS?
Насколько я понимаю, EXC_BAD_ACCESS возникает, когда вы пытаетесь получить доступ к плохой памяти (не стесняйтесь исправить меня, если я ошибаюсь)?
Есть ли способ уловить его, как в try-catch
в Java
, чтобы предотвратить общий сбой приложения?
Ответы
Ответ 1
Неа; EXC_BAD_ACCESS
означает, что вещи ушли с рельсов. Ваша программа пытается получить доступ к недопустимому адресу памяти. То есть память была повреждена и нет прогнозируемого восстановления.
Это может быть проблема управления памятью. Если вы можете воспроизвести проблему, включите NSZombies и посмотрите, что произойдет. Или разместите обратную линию здесь.
Обратите внимание, что исключения стиля try-catch не восстанавливаются в iOS/ Cocoa. Исключения не должны использоваться для обработки исправляемых ошибок. Это то, что для NSError.
Ответ 2
Можно использовать попытку catch, но сначала вам нужно знать, что вызвало проблему. Вы можете включить NSZombie для вашей текущей сборки, чтобы поймать ошибку и устранить ее. Измените текущую схему, включите NSZombie.
Ответ 3
Иногда вы можете использовать его в main
с помощью обработчика сигналов. Не позволяет вам многое сделать, кроме, может быть, запишите некоторые вещи.