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

标签 ios xcode watchkit

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

watchkit 扩展是应用程序的目标依赖项,因此我猜测它类似于为 watch 编译代码,然后为应用程序使用相同的编译代码,尽管在编译结果中我可以看到它是使用正确的标志进行编译,看不到 watchkit 和应用程序构建路径之间有任何重叠,有什么想法吗?

最佳答案

SWIFT版本

在 WatchKit 扩展目标的build设置中使用其他 swift 标志。例如,添加一个标志WATCH(必须带有-D前缀):

enter image description here

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

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

Objective-C版本

在 WatchKit 扩展目标的build设置中使用预处理器宏。例如添加宏WATCH=1:

enter image description here

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

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

关于ios - 在 WatchKit 和主机 App 中使用具有不同标志的同一文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29748808/

相关文章:

ios - 带操作按钮的 UILocalNotification

ios - 使用 Carthage 导入 CocoaLumberjack

xcode-select 错误格式错误的开发者路径

ios - 将数据从 View Controller 传递到 tabbarviewcontroller

ios - iPhone 模拟器 watch 应用程序图标丢失?

ios - React-Native 更改 selectTextOnFocus 关键字(选择、全选、粘贴)

ios - 将 uipageviewcontroller 添加到 uiview 时我无法滚动

xcode - 如何在 Xcode 4 中自动生成 Core Data GUI?

ios - 使用SharedData在iPhone和Watch之间通信更新

cocoapods - 无法调试/安装 Watch App Extension