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のbegin-editイベントをキャッチするにはどうすればよいですか?

4

1 に答える 1

4

何よりも、Xcode4はデバッガーの動作を変更しました。左側のデバッガーパネルでは、一番下にスライダーがあり、スタックフレームが多いか少ないかが表示されます。一番上のスタックフレーム(UIApplication)を表示しています。そのスライダーをスライドすると、クラッシュしている場所がよりわかりやすくなる可能性があります。

また、EXC_BAD_ACCESSの場合、過剰リリースされているものをキャッチするために、環境変数としてNSZombieEnabled = YESをオンにしましたか?通常、これはメモリの問題です。

于 2011-04-11T03:53:00.533 に答える