#author("2018-01-19T19:48:15+09:00","default:wikiwriter","wikiwriter")
#author("2018-02-20T13:32:34+09:00","default:wikiwriter","wikiwriter")
&tag(Swift/Swift4);
*目次 [#v93483fd]
#contents
*関連ページ [#p124067b]
*参考情報 [#u4fd3007]

*変更点 [#f4360f0d]

**@objc inferenceの変更 [#qf5f5b9c]
-@objcはSwiftのクラスをObjective-Cから呼び出すために必要となるキーワード。
-Swift3では暗黙的に推論していたが、Swift4は必要なところだけ行うようになった。
-そのため明示的に@objcを追加する必要がでてくる。

***移行時のエラー対策 [#tb4aa70c]
-以下のようなメッセージが表示される。
#pre{{
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 "Demo" target.
}}
-[[swift4 - The use of Swift 3 @objc inference in Swift 4 mode is deprecated? - Stack Overflow:https://stackoverflow.com/questions/44379348/the-use-of-swift-3-objc-inference-in-swift-4-mode-is-deprecated/44380886]]基本的にビルド設定を変更すればいいだけなのか?
-[[Swift4 [SE-160 Limiting @objc inference] 概要 - Qiita:https://qiita.com/furuyan/items/97297614461b2f157e90]]にはSWIFT_DEBUG_IMPLICIT_OBJC_ENTRYPOINTの値を変更してテストすればよいともある。

※でも手元のプロジェクトでは単にビルド設定を変更するだけでよかった

-Build Settingsで、inferenceを検索。
-「Swift 3 @objc inference」をOnからDefaultに変更する。

トップ   編集 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS