2

現在、watchOS アプリ拡張機能を使用して iOS アプリを作成しています。両方のアプリで共有される特定のクラスがあり、両方のプラットフォームでほとんど同じですが、特定のバリエーションがあります。これをどのように実装するのが最善なのか疑問に思っています。現在、私は以下を使用しています:

#if os(watchOS)
private var watchOSOnlyProperty: Any?
#endif

また

#if os(iOS)
func iOSOnlyMethod() {
    ...
}
#endif

これは機能しますが、XCode はこれについてかなり混乱しているように見えるため、いくつかの問題が発生します。この構文を使用すると、インデント、オートコンプリート、およびメソッドのリストがすべて少しずれます。

これを行う適切な方法は何ですか?iOS/watchOS 固有のプロパティとメソッドを Swift の共有クラスに追加するにはどうすればよいですか?

4

2 に答える 2

1

コード分​​離

コードを分割するには 2 つの方法があります

  • #if os(...)あなたが提案したように使用してください。
  • ターゲットごとに個別のファイルを使用します。

オートコンプリート

Xcode は、現在選択されているターゲットのコードのみをオートコンプリートします。 Xcode ターゲット セレクター

ブロック内のコードのオートコンプリート#if os(watchOS)が必要な場合は、(ツールバーを使用して) 現在のターゲットを wathOS ターゲットに変更する必要があります。

于 2017-08-08T09:14:20.983 に答える