@objcのwarning@Swift 4の対処
UIRefleshControlを使っているSwift3プロジェクトをSwift4にマイグレーションさせた場合、呼び出しメソッドに@objcが追加されますが、Swift3プロジェクトの設定のま まだとワーニングが表示されます。
ビルドセッティングでSwift3 @objc interfaceをOnからDefaultに変更するとワーニング消えます。
Swift 4で@objcに関するwarningが出たときの対処 - Qiita
なにやらよく分かりませんが、ここを読むとなんとなく雰囲気がわかります。 @objcキーワードはいつまで残るんでしょうか…?
#selector がswift4では使えない? → 使えます - MILLEN BOX
ワーニング
The use of Swift 3 @objc inference in Swift 4 mode is deprecated. Please address deprecated @objc inference warnings, test your code with “Use of deprecated Swift 3 @objc inference” logging enabled, and then disable inference by changing the "Swift 3 @objc Inference" build setting to "Default" for the "NewsReader" target.
マイグレーションされたコード
Xcode3 override func viewDidLoad() { // (中略) self.refreshControl = UIRefreshControl() self.refreshControl?.addTarget(self, action: #selector(refresh(sender: )), for: .valueChanged) // (中略) } func refresh(sender: UIRefreshControl) { print("refresh") startDownload() self.refreshControl?.endRefreshing() }
Xcode4 @objc func refresh(sender: UIRefreshControl) { print("refresh") startDownload() self.refreshControl?.endRefreshing() }