【发布时间】:2015-10-30 22:59:24
【问题描述】:
我当前的 iOS 应用支持 iOS 8 及更高版本。我决定实现一个手表应用程序,我希望手表和 iOS 应用程序通过 WatchConnectivity 进行通信。假设我想构建一个类来处理连接,这个类是WCSessionDelegate。为了能够在我的项目中包含该类,我必须将其包装到 @available(iOS 9.0,0) 标记中,这没关系......但是,我如何在 AppDelegate (或任何其他类中)跟踪此类的实例)???
我不能写像
class AppDelegate: UIResponder, UIApplicationDelegate {
@available(iOS 9.0,0)
var connectivityHandler: ConnectivityHandler?
如何在应该支持 iOS 8 的项目中使用这些类?!
编辑----
我找到了这个解决方案,但听起来并不“好”。我创建了一个动态属性,并依赖于当前系统,我返回一个实例或只是 nil...该属性显然应该是 AnyObject 类型,才能成为有效的 iOS8 参数...
var _connectivityHandler: AnyObject?
var connectivityHandler: AnyObject? {
get {
if _connectivityHandler != nil {
return _connectivityHandler
}else{
if #available(iOS 9.0, *) {
_connectivityHandler = ConnectivityHandler()
} else {
_connectivityHandler = nil
}
return _connectivityHandler
}
}
set(value) {
_connectivityHandler = value
}
}
【问题讨论】:
标签: swift apple-watch