Я знаю, как решить проблемы EXC_BAD_ACCESS, но я не уверен, как выполнить юнит-тестирование.Есть ли способ захватить EXC_BAD_ACCESS в коде вместо простого сбоя?
Вот почему я спрашиваю: я написал библиотеку, которая интенсивно использует блоки, например:
- (void)doSomething:(void (^)())myBlock;
В моей реализациииз doSomething:
Я собираюсь в конечном итоге запустить блок, например так:
myBlock();
Если вызывающий абонент пропустит nil для блока, то произойдет сбой с EXC_BAD_ACCESS
, поэтому решение состоит в том, чтобы проверитьчто этот блок существует, например:
if (myBlock) {
myBlock();
}
Эту проверку на ноль довольно легко забыть, поэтому я хотел бы написать способ, который завершится неудачно при возникновении сбоя.Я полагаю, что сбой можно считать неудачей теста, но я думаю, что другим было бы лучше, если бы другие пытались запустить тесты, чтобы увидеть хорошее сообщение об ошибке, а не сбой.Есть идеи?