Прежде всего, поскольку вы работаете над приложением для iPhone, вам, вероятно, следует использовать NSAssert () вместо функции vanilla BSD assert.
например. NSAssert(the_object, @"NIL object encountered");
Макрос NSAssert вызовет исключение Objective C (NSInternalInconsistencyException
), если утверждение не выполнено.
Так как ваша цель - сломать исключение, следующий шаг - отключить отладчик XCode для исключений Objective-C. В любом случае, это, наверное, хорошая вещь.
В окне Точки останова (пункт меню Выполнить-> Показать-> Точки останова) щелкните там, где написано «Двойной щелчок для символа», чтобы ввести символ -[NSException raise]
Последнее, на что следует обратить внимание, это то, что NSAsserts не компилируются в сборке релиза. Это означает, что вы должны быть готовы обработать исключение в вашем приложении или создать собственный макрос, который компилируется в сборках выпуска.
Вот макрос, который я использую для компиляции утверждений в коде времени выполнения (обратите внимание, что затем я использую HMAssert в своем коде вместо NSAssert):
#ifdef DEBUG
# define HMAssert(A,B) NSAssert(A,B)
#else
# define HMAssert(A,B)
#endif
Для этого требуется определить макрос препроцессора DEBUG. Вот как это настроить:
- Щелкните правой кнопкой мыши по вашему проекту в Xcode. Это будет верхний элемент на левой панели, где перечислены файлы ваших проектов
- Выберите «Получить информацию» из всплывающего контекстного меню.
- Перейдите на вкладку «Сборка».
- Убедитесь, что для «Конфигурация» установлено значение «Отладка».
- Введите DEBUG в поле рядом с «Макросы препроцессора» в разделе «GCC 4.2 - Предварительная обработка».