Плохой доступ во время звонка в супер - PullRequest
0 голосов
/ 04 ноября 2011

В функции, переопределенной из непосредственного суперкласса, exc_bad_access выбрасывается, когда функция пытается вызвать свою версию суперкласса. Выполнение не превращается в функцию суперкласса, а вместо этого выдает сигнал из objc_msgSend. Класс и оба параметра соответствуют ожиданиям. Вызов не завершается ошибкой, если expired имеет значение true, и функция суперкласса не вызывает ошибку при вызове в другом месте.

- (void)customizeCell:(UITableViewCell *)cell atIndexPath:(NSIndexPath *)indexPath
{
    if (expired)
    {
        //do some things
    }
    else
    {
        //fails here
        [super customizeCell:cell atIndexPath:indexPath];
    }
}

1 Ответ

1 голос
/ 04 ноября 2011

Оказывается, в суперзвезде произошла ошибка назначения.Я должен был назначить новую переменную для приведения параметра, но вместо этого назначил ее самой.Это предсказуемо зависало при вызове из реализации подкласса.Если вызывается напрямую, это фактически переменная, которая будет параметром, предполагаемое поведение.Добавление операторов записи в функцию или изменение флагов компилятора изменяет это поведение, поэтому кажется, что это просто случайность с мусорной памятью.

...