这很神秘。
我的视图控制器在.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的开始编辑事件?
答案 0 :(得分:4)
最重要的是,Xcode 4改变了调试器的行为。在左侧的调试器面板上,底部应该有一个滑块 - 显示更多或更少的堆栈帧。你正在展示顶部堆栈框架(UIApplication) - 如果你滑动那个滑块,你可能会看到更多关于你崩溃的想法。
另外,如果它是EXC_BAD_ACCESS,你是否打开NSZombieEnabled = YES作为环境变量以捕获过度释放的内容?通常这是一个记忆问题。