あなたは、移行ツールを実行することをお勧めします - Xcodeで「... [編集]>スイフトカレント構文に>変換」に行くと、「推論を最小化」を選択し、「スウィフト4 @objc推論」について(私が実際に気づいていなかったのは、最近まで、マイグレーション担当者のほとんどが自動的にコンパイラ修正を適用しているということです)。
スウィフト4ターゲットで既にになっている場合は、その上でマイグレーションを実行することはできません。これを修正するには、「Swift言語バージョン」のビルド設定を「Swift 3.2」に変更し、その上でマイグレータを実行します(バージョンを4に戻す)。
Migratorが実行された後、 "Swift 3 @objc inference"ビルド設定が "On"に設定されていることがわかります。このビルド設定でプログラムをテストして、 @objc
としてマークされていないObj-Cエントリポイントに関するランタイム警告を取得し、完了したらビルド設定を「デフォルト」に変更します(in this Q&Aを参照)。
さらに、マイグレーションの後、@objc
が追加された場所を自由に見てください。特定のクラスの単一の@objc extension
を使用してコードを整理すると、公開するメソッドのグループを定義できますObj-Cに送信する。 のObj-Cエクスポージャーを必要とするクラスをお探しの場合は、の互換性のあるメンバを選択し、クラス@objcMembers
をマークすることができます。詳細については、this Q&Aを参照してください。
ターゲットはすでにSwift 4に移動されていたので、「Swift言語バージョン」のビルド設定を「Swift 3.2」に変更して、Migratorを実行しました。 – AamirR