Swift2入門「unrecognized selector sent to instance 〜」エラーの解決方法

この記事は2016年2月22日に書かれたものです。内容が古い可能性がありますのでご注意ください。


Swift2入門「unrecognized selector sent to instance 〜」エラーの解決方法

Xcode7でSwift2を使用してiPhoneアプリを開発中に発生したエラーの原因と対策をまとめていきます。
エラーの原因は多々あるとは思いますが、iPhoneアプリ開発者の何かのヒントになれば幸いです。

本日のエラー:「unrecognized selector sent to instance 〜」

エラー発生時のソースコード

こんな感じでストーリーボードを使用せずにボタンを用意し、クリックしたら処理を実行するようなサンプルを作成。

let button = UIButton(type: UIButtonType.System) as UIButton
button.frame = CGRect(x:100,y:100,width:100,height:100)
button.addTarget(self,
            action: "buttonClick",
            forControlEvents:UIControlEvents.TouchUpInside)

〜省略〜

func buttonClick(sender: UIButton!){
    print("Clicked!")
}

実行し、当該ボタンをクリック時に「unrecognized selector sent to instance 〜」が発生しました。
「インスタンスに送信されたインスタンスが認識できません」と訳せます。原因わかりますか?

原因と対応

原因は、
「action: “buttonClick”,」の行の
「buttonClick」の後ろに「:」が付いていないことでした。

ということで、対応方法はシンプルに、
「action: “buttonClick:”,」
としてあげたところエラーは解消されました。

他に考えられる原因としては、
関数名が違ってるということもあり得るでしょう。

  • このエントリーをはてなブックマークに追加

PAGE TOP