Прерывается выполнение - EXC_BAD....

Рейтинг: 0Ответов: 1Опубликовано: 13.01.2015

Уважаемые знатоки, прошу помочь, если сможете. Есть код:

    for (int i = 0; i < _sevenForDisplay.length; i++) {

        _sevensForReplace = [_sevensForReplace stringByReplacingCharactersInRange:NSMakeRange([[_sevenForDisplay substringWithRange:NSMakeRange(i,1)] intValue]-1,1) withString:@"1"];

        NSOperation *operation = [[NSInvocationOperation alloc]
                                  initWithTarget:self
                                  selector:@selector(blinkPicSeven:)
                                  object:@(_forBlink)];

        [queue addOperation:operation];

    }

 [userDefaults setObject:_sevensForReplace forKey:@"sevens"];

Когда он выполняется в процессе работы программы, вылетает на последней строке с сообщением Thread 1: EXC_BAD_ACCESS ( code=1, address=0x7a0090018).

Начинаю отлаживать пошагово (становлюсь в начале цикла и далее по F6), все проходит нормально.
Даже не знаю, куда смотреть. ((

Ответы

▲ 1

Добавьте в дебаггере остановку на исключениях. И увидете точное место остановки.

alt text

Обновление

Не сразу заметил, что пример для iOS. У вас '[[_sevenForDisplay substringWithRange:NSMakeRange(i,1)] intValue]' может быть равен 0. Значит stringByReplacingCharactersInRange принимает диапазон -1,1. Это необработанное исключение в iOS SDK. Ошибка или нет, не знаю, но в Mac OS ваш пример работать будет, выводя сообщение.