为啥即使实现了所有必需的方法,Class 也不会确认协议“WCSessionDelegate”错误

Posted

技术标签:

【中文标题】为啥即使实现了所有必需的方法,Class 也不会确认协议“WCSessionDelegate”错误【英文标题】:Why Class doesn't confirm to protocol 'WCSessionDelegate' error showing even when all required methods are implemented为什么即使实现了所有必需的方法,Class 也不会确认协议“WCSessionDelegate”错误 【发布时间】:2016-10-02 13:56:31 【问题描述】:

这里不是我使用的部分代码:

class RealTimeVC : UIViewController, WCSessionDelegate
   var session : WCSession!
   override func viewWillAppear(animated: Bool)
    
        if (WCSession.isSupported())
        
            session = WCSession.defaultSession()
            session.delegate = self
            session.activateSession()

        
    

    //WCSessionProtocol

    func session(session: WCSession,
                 activationDidCompleteWith activationState: WCSessionActivationState,
                 error: NSError?)
        print("Print Something")
    

    func sessionDidBecomeInactive(session: WCSession)
         print("Print Something")
    

    func sessionDidDeactivate( session: WCSession)
         print("Print Something")
    


如果类没有实现 WCSessionDelegate 协议,则没有编译器错误。我使用的是 Xcode 8 Beta,Swift 3,部署目标是 ios10 和 WatchOS 3。

【问题讨论】:

我使用的协议方法名有错误。 activationDidCompleteWith 最后缺少文本状态。正确的方法是:activationDidCompleteWithState 【参考方案1】:

看起来您实现的“激活完成”委托回调与协议要求的回调并不完全匹配。一旦你解决了这个问题,你应该会发现编译器会接受你的协议一致性!

【讨论】:

以上是关于为啥即使实现了所有必需的方法,Class 也不会确认协议“WCSessionDelegate”错误的主要内容,如果未能解决你的问题,请参考以下文章