iPhoneアプリ作成(12) unrecognized selector sent to instance
※この記事へアクセスされる方が非常に多いです。参考になれば幸いです
ハマりました。
原因がわかってしまえば、きわめて単純なミスですが、ずいぶんと苦労してしてしまったのでメモっておきます。
◆やりたかったこと
テーブルセル内のTextFieldから、キーボード入力が終了した時点で、値を取り出す
◆誤ったソース
[textField1 addTarget:self action:@selector(goTextFieldValueChanged) forControlEvents:UIControlEventEditingDidEnd]; ※textField1はUITextFieldのインスタンス。addTargetメソッド以外は省略。 -(void)goTextFieldValueChanged:(id)sender{ UITextField *tf = sender; NSLog(@"%@",tf.text); }
◆エラーメッセージ
unrecognized selector sent to instance 0x6d2cc80 Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: ' -[ListPropertyViewController goTextFieldValueChanged]: unrecognized selector sent to instance 0x6d2cc80' (機械翻訳) インスタンス0x6d2cc80に送られた認識されていないセレクタ 捕捉されなかった例外'NSInvalidArgumentException'のため装置を終えて、 以下を推論してください。 '--ListPropertyViewController textFieldValueChanged、:、 ' '認識されていないセレクタはインスタンス0x6d2cc80に発信しました' ※instance 0x6d2cc80 は self のアドレス
◆ソースの誤り箇所
誤 @selector(goTextFieldValueChanged)
正 @selector(goTextFieldValueChanged:)
実行するメソッド名に「:」(コロン)が抜けていた
◆エラーメッセージについて
メソッド名を誤って入力したため、該当するメソッドが存在しない単純な状況であったが
ずいぶんと豪華なエラーメッセージを出力してくれた
おかげで、なんのことか全く見当がつかず、2日ほどハマってしまった。