在拨打超级电话时访问不良

时间:2011-11-04 00:55:08

标签: ios exc-bad-access

在从直接超类重写的函数中,当函数尝试调用其自身的超类版本时,将抛出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 个答案:

答案 0 :(得分:1)

原来在超级电话中有一个分配错误。我原本应该为一个参数的强制转换赋予一个新的变量,而是将它赋予它本身。从子类实现调用时,这可预测地崩溃了。如果直接调用,这实际上是变量作为参数,预期的行为。向函数添加日志记录语句或更改编译器标志会改变这种行为,因此看起来这只是垃圾内存的侥幸。