#available
区分 watchOS 和 iOS 时似乎不起作用。
以下是 iOS 和 watchOS 之间共享的代码示例:
lazy var session: WCSession = {
let session = WCSession.defaultSession()
session.delegate = self
return session
}()
...
if #available(iOS 9.0, *) {
guard session.paired else { throw WatchBridgeError.NotPaired } // paired is not available
guard session.watchAppInstalled else { throw WatchBridgeError.NoWatchApp } // watchAppInstalled is not available
}
guard session.reachable else { throw WatchBridgeError.NoConnection }
似乎它只是默认为 WatchOS 和#available
编译器不考虑。
我是在滥用这个 API,还是有其他方法可以区分 iOS 和 WatchOS 的代码?
更新:好像我在滥用 BPCorp 提到的 API
对上述代码使用 Tali 的解决方案:
#if os(iOS)
guard session.paired else { throw WatchBridgeError.NotPaired }
guard session.watchAppInstalled else { throw WatchBridgeError.NoWatchApp }
#endif
guard session.reachable else { throw WatchBridgeError.NoConnection }
不幸的是,没有#if os(watchOS)
.. 从 Xcode 7 GM 开始
编辑:不确定何时添加,但您现在可以#if os(watchOS)
在 Xcode 7.2 上进行