在WatchKit和主机App中使用具有不同标志的相同文件

我正在尝试在我的watchkit扩展和主机App中使用相同的代码,但是在主机App中有一些额外的代码,在watchkit扩展中有一些额外的代码。 为此,我在各自的目标上添加了WATCH和APP swift标志。 问题是,当我选择我的应用程序方案查看我的代码时,它没有语法突出显示APP代码,但突出显示WATCH代码,而其他引用APP代码的代码则无法编译。

Watchkit扩展是App的目标依赖,所以我猜它就像编译手表的代码然后使用相同的编译代码,虽然在编译结果中我可以看到它正在编译正确的标志,看不到watchkit和App构建路径之间的任何重叠,任何想法?

SWIFT版本

在WatchKit Extension目标的构建设置中使用其他swift标志 。 例如,添加标志WATCH(必须以-D为前缀):

在此处输入图像描述

然后在您的共享文件中添加以下代码:

#if WATCH NSLog("watch") #else NSLog("app") #endif 

Objective-C版本

在WatchKit Extension目标的构建设置中使用预处理器宏 。 例如,添加一个宏WATCH = 1:

在此处输入图像描述

然后在您的共享文件中添加以下代码:

 #ifdef WATCH NSLog(@"watch"); #else NSLog(@"app"); #endif