我目前正在开发一款应用程序,该应用程序仍支持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
还有更好的答案吗?