質問: false } } ''' 警告エラー 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 "SKtest" target. @objcはswift4では警告になるのはわかっているのですが、その為には記述を変えるしかなくその方法がわからないのです。 'Swift 4で@objcに関するwarningが出たときの対処' というnetも見ていたのですが、 ベストな方法としては@objc を書き換える方法がベストだと思っていました。 質問の丸投げだと言われればどうしようもないですが ... 上記警告文では build setting to "Default" for the "SKtest" target. "Default"にしろとあるようなのですが、現在"Default"になっています。 On Swift3での@objc推論を有効にする(非推奨)...onにするのは非推奨となっているようです。 @objcはswift4では使えないと思っていました。 勘違いですか。 私のpcでは警告文に build setting to "Default" for the "SKtest" target. "Default"にしろとあるようなのですが、現在"Default"になっていて変えようが ありません。
回答: > > @objcはswift4では警告になるのはわかっているのですが、その為には記述を変えるしかなくその方法がわからないのです。 > > > 完全に勘違いしています。 「The use of Swift 3 @objc inference in Swift 4 mode is deprecated.」は、「Swift3の@objc推論機能の使用はSwift4モードで非推奨になりました。」と言っています。 @objcを使うことが非推奨になったのではなく、@objc推論機能を使うことが非推奨になったということです。@objc推論機能とは、「@objc」と書かなくてもSwiftが勝手に@objcがつけられたとみなして動作する機能です。 つまり、今まで(Swift3まで)は、「@objc」と書かなくてもエラーにならなかったところが、Swift4では「@objc」と書かないといけない場面が出てくるということです。 そして、今表示されている警告は、コードに対する警告ではなく、Build Settingsに対する警告です。この警告は、Build Settingsの「Swift 3 @objc Inference」を「On」に設定した時に表示され、「Default」または「Off」に設定した時に表示されなくなります。 「Swift 3 @objc Inference」を「Default」にして、質問に書かれているコードをビルドしたなら、fuzzballさんも試されている通り、この警告は出ないはずです。私も試してみたところ、警告は出ませんでした。 この設定を「Default」にした後、再ビルドしましたか? 後、念のため伝えておくと「以降の処理が上手くいってない」というのは、この警告とは関係ないです。この警告が出ることによるアプリへの影響は、@objcが付与された処理が無駄なところで行われる可能性があるというだけです。 上手くいかない部分については、別の原因を探ることをお勧めします。