为啥即使实现了所有必需的方法,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”错误的主要内容,如果未能解决你的问题,请参考以下文章

即使构建设置具有调试信息格式 = 带有 dSYM 的 Dwarf,Xcode 也不会生成所有必需的 dSYM

即使我有 session_start(); 我的会话变量也不会传递到我的其他页面;在所有 3 页的开头。为啥是这样?

为啥ios build即使成功也不会在试飞中显示

为啥即使我设置了 DataTypeReplacement = 'CBuiltIn',MATLAB Coder 也不会生成 C 内置类型?

为啥即使 objectEquality 设置为 true,$watch 也不会触发?

即使值为空,textarea 的“必需”属性也不起作用