unrecognized selector sent to instance エラー

スポンサーリンク

pull to refresh という画面を下方向にスワイプして表示データを更新させる機能を作っていたところ、Xcode でビルドした後にシミュレーターでアプリを実行したら以下のエラーが出ました。

特にコンパイルエラーなどは発生せず、ビルド成功した後の実行時に発生しまして、何か特定のメソッドが存在しないよ〜というエラーらしい。以下エントリーなど参考。

unrecognized selector sent to instance : 週末プログラマの開発日記

— 環境 —
Swift 1.2
Xcode 6.3.1

【お知らせ】 英単語を画像イメージで楽に暗記できる辞書サイトを作りました。英語学習中の方は、ぜひご利用ください!
画像付き英語辞書 Imagict | 英単語をイメージで暗記
【開発記録】
英単語を画像イメージで暗記できる英語辞書サービスを作って公開しました
スポンサーリンク

unrecognized selector sent to instance xxxxx が発生したコード

以下の pull to refresh を実現するコードでエラーが発生した。

簡単に説明すると、refreshControl.addTarget に更新時のアクションである onRefresh を渡す。onRefresh は、更新時の処理を func として別途定義します。上記コードにミスが含まれるために、「unrecognized selector sent to instance xxxxx」が発生していた。

修正したコード

以下のように修正したら直りました。

違いが分かりますでしょうか..

修正箇所は、refreshControl.addTarget の第二引数(action:)の指定を onRefresh から onRefresh:(コロン付き)に変更した部分です。これで、表題の実行時エラー「unrecognized selector sent to instance xxxxx」が消えました。

どうやら refreshControl.addTarget に渡す action に引数がある場合は、refreshControl.addTarget で指定する action の名前に :(コロン)を付けないといけないらしいです。

iOS/swiftでselectorを使った際に引数なしのメソッドを指定しているにもかかわらず”:”をつけていて時間を取られたので備忘録 – Qiita

これは、自分みたいな Swift/iOS 初心者ははまる…。unrecognized selector sent to instance エラーが発生したら、メソッド名の指定でスペルミスがないかなどを調べれば解決できるかと思います。

スポンサーリンク
 
スポンサーリンク

Leave Your Message!