Xcode7.3でのselectorの使い方
Xcode7.3でのselectorの使い方
前置き
Xcode7.3でselectorを使おうとしたら微妙にうまく動かなかったので忘備録代わりにメモ。
開発環境は下記参照。
開発環境
PC:MacBook Pro 2011early 15inch
OS:OS X El Capitan 10.11.6
IDE:Xcode 7.3.1
メモリ:16GB(8GB x 2)
CPU:Core i7-2635QM 2.00GHz
Xcode7.3でのselectorの使い方
ことの発端は、以下のコード。
myButton.addTarget(self, action: "onClickMyButton:", forControlEvents: .TouchUpInside)
実行しようとしたら出た「Use of string literal for Objective-C selectors is deprecated; use ‘#selector’ instead.」という警告が出る。
気持ち悪いので調べてみると、Xcode 7.3 / Swift 2: “No method declared with Objective-C selector” warningというページで似たような質問が投稿されていた。どうやら、Swift2.2/Xcode7.3からselectorの書き方が変わったとのこと。
以下のように修正するとエラーが出なくなった。
myButton.addTarget(self, action: #selector(self.onClickMyButton), forControlEvents: .TouchUpInside)
よくよく考えてみるとエラー文そのままの修正だけれど、いきなり変わると戸惑いますね。
おまけ
警告文「Use of string literal for Objective-C selectors is deprecated; use ‘#selector’ instead.」を直訳※すると「stringのリテラルをObjective-Cのselectorsとして使うことは非推です。代わりに#selectorを使ってください。」となります。
実は警告文をそのまま解読すれば原因がわかるというオチです。このようにエラー文や警告文には修正のヒントが記載されていることも多くあります。エラーメッセージはよく読んで調べる癖をつけると、プログラミングの力になります。
※なお、直訳と書きましたが厳密ではありません。厳密性が必要な方はご自分でお調べください。
エラーメッセージなどでよく見かける英単語が苦手な方はこちらの記事もあわせてどうぞ。
今日のIT英語
TechProjin 開発系基礎講座 連載リンク
基礎からPHPWEBアプリ解発を学ぶなら・・
PHP基礎 連載
AIなどで注目急上昇!これから学ぶならPython!!
独学で学ぶ-pythonプログラミング 連載
汎用性◎ 定番プログラミング言語JAVA
Java基礎講座 連載