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日ほどハマってしまった。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です