Rei*_*ner 7 watchkit wcsession swift3 xcode8
我刚刚使用Xcode 8的转换功能将Swift 2应用程序转换为Swift 3.
我的代码有一个标记为的类WCSessionDelegate.  
在Swift 2中,它编译时没有方法sessionDidBecomeInactive和sessionDidDeactivate.  
如果我编译Swift 3版本,编译器会抱怨我的类不符合协议WCSessionDelegate,这显然是正确的.
然后它提供插入两个函数的存根:  
public func sessionDidBecomeInactive(_ session: WCSession) { }  
public func sessionDidDeactivate(_ session: WCSession) { }
插入这些存根后,会报告以下错误:
Cannot override 'sessionDidBecomeInactive' which has been marked unavailable  
Cannot override 'sessionDidDeactivate' which has been marked unavailable  
我该如何解决这个问题?
ccj*_*sen 25
因为委托方法sessionDidDeactivate并且sessionDidBecomeInactive在watchOS上被标记为不可用,所以您将使编译器忽略共享类中的那些代码片段.您可以使用以下预处理器宏执行此操作:
#if os(iOS)
public func sessionDidBecomeInactive(_ session: WCSession) { }  
public func sessionDidDeactivate(_ session: WCSession) {
    session.activate()
}
#endif
还请注意我在activate通话中添加了sessionDidDeactivate通话.这是当用户从一个配对的手表切换到第二个配对的手表时重新激活手机上的会话.像这样调用它假设您没有其他线程/代码的一部分需要在切换发生之前给出时间.有关支持快速切换功能的更多信息,请查看Apple 示例代码
| 归档时间: | 
 | 
| 查看次数: | 1812 次 | 
| 最近记录: |