Help us understand the problem. What is going on with this article?

Swift 4で@objcに関するwarningが出たときの対処

More than 1 year has passed since last update.

warningの内容

Swift3プロジェクトをSwift4へマイグレーションさせた際に、以下のようなwarningが出る場合があります。

image.png

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 "ターゲット名" target.

warningの説明

まず、Swift4の@objcについてはこちらの記事で説明しています。
Qiita | attributeまとめ[Swift4対応]

Swift3では@objcが明示的に付与されてない定義にも@objcが暗黙的に推論され、付与されていました。Swift4ではSwift3での@objc推論が非推奨となったため、設定を見直したほうが良いという警告です。この警告がでている際は、Swift3の@objc互換モードでビルドされるため、非推奨の@objc推論は有効になっています。

対応方法

TargetのBuild Settings設定の中に、Swift3 @objc Infenceという項目があるので、これをDefaultに変更します。

Swift3 @objc Infenceの設定値 説明
Default Swift4でのデフォルト値(@objc推論が無効)
On Swift3での@objc推論を有効にする(非推奨)
Off Swift3での@objc推論を無効にする

(DefaultとOffは何が違うのだろう...🤔)

image.png

なお、@objc推論が利用されているエントリポイントをログ出力により調べる場合には、以下の記事が参考となります。
The use of Swift 3 @objc inference in Swift 4 mode is deprecated?

SWIFT_DEBUG_IMPLICIT_OBJC_ENTRYPOINT environmental variable to values from 1 to 3 to see the usages of the Objective-C entry points in the logs.

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした