如何将仅适用于iOS 9用户的“Watch Connectivity”与仍将iOS7作为最低开发目标的应用程序安全集成



我目前正在开发一款应用程序,该应用程序仍支持iOS 7(最低开发目标),但我有一个要求,即仅为使用iOS 9的用户集成Watch Connectivity因此,我创建了一个名为WatchConnectivityManager单例并且它有一个这样的私人成员。

private let session: WCSession? = WCSession.isSupported() ? WCSession.defaultSession() : nil

在iOS9上一切都很好,但在iOS8和7上,即使我的WatchConnectivityManager单例类定义如下所示,我也会在上面一行崩溃。

@available(iOS 9.0, *)
class WatchConnectivityManager: NSObject, WCSessionDelegate {
    ....
}

任何帮助克服这种情况的人都将不胜感激。

注意:我可以在使用WCSession相关代码的所有地方轻松执行版本检查。但是,是否有任何方法可以仅在WatchConnectivityManager单例实现内部集成该检查?

最后我找到了答案,那就是简单地添加

NSClassFromString("WCSession") != nil

在使用WCSession类之前进行检查。

private let session: WCSession? = NSClassFromString("WCSession") != nil && WCSession.isSupported() ? WCSession.defaultSession() : nil

还有更好的答案吗?

最新更新