2017-08-06 56 views
1

我目前正在構建一個帶有watchOS應用程序擴展的iOS應用程序。我有兩個應用程序共享的某些類,它們在兩個平臺上基本相同,但有一些變化。我想知道如何最好地實施。現在,我使用以下命令:Swift中共享watchOS/iOS類的平臺特定代碼?

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

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

雖然這個工作,它給出了一些問題,因爲的XCode似乎很困惑這個問題。使用這種語法時,縮進,自動完成和方法列表都有點關閉。

這樣做的正確方法是什麼?如何在Swift中爲iOS/watchOS特定的屬性&方法添加共享類?

+1

這是正確的方式 – Paulw11

+0

嗯......這對我來說在XCode中產生了很多問題,我認爲它不是真的可行。例如,對於使用此類的類,自動完成幾乎停止了完全工作。任何替代品? – BlackWolf

+0

爲不同的目標創建不同的源文件。這應該工作,但。嘗試刪除您的派生數據 – Paulw11

回答

0

代碼分離

有分開的代碼

  • 使用#if os(...)像你提出了兩種方式。
  • 對不同的目標使用不同的文件作爲 。

自動完成

的Xcode會爲您的當前選定的目標只有自動完成代碼。 Xcode target selector

如果你想爲內部#if os(watchOS)塊代碼自動填充功能,那麼你需要改變你的當前目標(通過工具欄)到wathOS目標。

0

您可以在Watch應用程序目標的Build Settings中添加C預處理器標誌。

-DWATCHOS 

然後

#ifdef WATCHOS 
// watchOS code here 
#else 
// iOS code here 
#endif 

會工作。