Есть ли способ поймать или обработать 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 с помощью обработчика сигналов. Не позволяет вам многое сделать, кроме, может быть, запишите некоторые вещи.