Xcode7.3でのselectorの使い方

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


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英語

Lesson1「fatal」

Lesson2「authentication」

Lesson3「permission」

Lesson4「implicitly」

Lesson5「initialize」

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

PAGE TOP