0

这很神秘。

我的视图控制器在 .h 文件中实现 UITextFieldDelegate 协议,在 .mm 文件中,我有

myTextField.delegate = self

而我的 textFieldDidBeginEditing 事件只是一个 NSLog 消息。

当我运行我的程序并将焦点放在 myTextField 上时,我得到一个 EXC_BAD_ACCESS 错误。

int main(int argc, char *argv[])
{
    NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
    int retVal = UIApplicationMain(argc, argv, nil, nil); // EXC_BAD_ACCESS
    [pool release];
    return retVal;
}

这一定是我在某个地方犯了一个明显的错误,但它整晚都困扰着我。有人知道为什么吗?以及如何捕捉 textField 的开始编辑事件?

4

1 回答 1

4

最重要的是,Xcode 4 改变了调试器的行为。在左侧的调试器面板上,底部应该有一个滑块——显示更多或更少的堆栈帧。您正在显示顶部堆栈框架(UIApplication) - 如果您滑动该滑块,您可能会看到更多关于您在哪里崩溃的想法。

另外,如果它是 EXC_BAD_ACCESS,你是否打开了 NSZombieEnabled = YES 作为环境变量来捕捉过度释放的内容?通常是内存问题。

于 2011-04-11T03:53:00.533 回答