#available似乎不工作时区分watchOS和iOS。
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之间的代码?
更新:似乎我是滥用API,如BPCorp所述
#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).. as of Xcode 7 GM
编辑:不知道什么时候添加,但你现在可以做#if os(watchOS)在Xcode 7.2
如果您只想在iOS上执行该代码,请使用#if os(iOS),而不是if #available(iOS …)。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。