UITextField捕获textFieldDidBeginEditing事件导致main.m中的EXC_BAD_ACCESS

时间:2011-04-11 03:40:41

标签: ios uitextfield uitextfielddelegate

这很神秘。

我的视图控制器在.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的开始编辑事件?

1 个答案:

答案 0 :(得分:4)

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

另外,如果它是EXC_BAD_ACCESS,你是否打开NSZombieEnabled = YES作为环境变量以捕获过度释放的内容?通常这是一个记忆问题。