在 WatchKit 和主机应用程序中使用具有不同标志的相同文件
Using the same file with different flags in WatchKit and host App
我试图在我的 watchkit 扩展和主机应用程序中使用相同的代码,但在主机应用程序中使用了一些额外的代码,在 watchkit 扩展程序中使用了一些额外的代码。为此,我在各自的目标上添加了 WATCH 和 APP swift 标志。问题是,当我在选择 App 方案的情况下查看我的代码时,它不会在语法上突出显示 APP 代码,但会突出显示 WATCH 代码,然后其他引用该 APP 代码的代码将无法编译。
watchkit 扩展是应用程序的目标依赖项,所以我猜它正在为手表编译代码,然后为应用程序使用相同的编译代码,尽管在编译结果中我可以看到它正在使用正确的标志进行编译,并且看不到 watchkit 和 App 构建路径之间的任何重叠,有什么想法吗?
SWIFT版本
在 WatchKit Extension 目标的构建设置中使用 other swift flags。例如,添加标志 WATCH(必须以 -D 为前缀):
然后在您的共享文件中添加此代码:
#if WATCH
NSLog("watch")
#else
NSLog("app")
#endif
Objective-C版本
在 WatchKit 扩展目标的构建设置中使用 预处理器宏 。比如添加一个宏 WATCH = 1:
然后在您的共享文件中添加此代码:
#ifdef WATCH
NSLog(@"watch");
#else
NSLog(@"app");
#endif
我试图在我的 watchkit 扩展和主机应用程序中使用相同的代码,但在主机应用程序中使用了一些额外的代码,在 watchkit 扩展程序中使用了一些额外的代码。为此,我在各自的目标上添加了 WATCH 和 APP swift 标志。问题是,当我在选择 App 方案的情况下查看我的代码时,它不会在语法上突出显示 APP 代码,但会突出显示 WATCH 代码,然后其他引用该 APP 代码的代码将无法编译。
watchkit 扩展是应用程序的目标依赖项,所以我猜它正在为手表编译代码,然后为应用程序使用相同的编译代码,尽管在编译结果中我可以看到它正在使用正确的标志进行编译,并且看不到 watchkit 和 App 构建路径之间的任何重叠,有什么想法吗?
SWIFT版本
在 WatchKit Extension 目标的构建设置中使用 other swift flags。例如,添加标志 WATCH(必须以 -D 为前缀):
然后在您的共享文件中添加此代码:
#if WATCH
NSLog("watch")
#else
NSLog("app")
#endif
Objective-C版本
在 WatchKit 扩展目标的构建设置中使用 预处理器宏 。比如添加一个宏 WATCH = 1:
然后在您的共享文件中添加此代码:
#ifdef WATCH
NSLog(@"watch");
#else
NSLog(@"app");
#endif