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

时间:2015-04-20 13:09:07

标签: ios xcode watchkit

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

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

1 个答案:

答案 0 :(得分:1)

SWIFT版本

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

enter image description here

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

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

Objective-C版

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

enter image description here

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

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