Swift代理報錯Optional can only be applied to members of an @objc protocol

Hhl發表於2017-12-13

報錯資訊

Swift是不允許設定協議的可選的狀態,協議宣告的方法都是必須實現的。

解決方案一

@objc
新增@objc修飾協議。

解決方案二

實現所有宣告的方法

我的做法

在父類中實現宣告的方法

    class HLBaseViewController: UIViewController, UIViewCollectEventsDelegate

    func uiView(ClickRefreshWithParams params: AnyObject?) {
        
    }
    
    func uiView(uiView: UIView?, CollectEventsType type: AnyObject?, withParams params: AnyObject?) {
        
    }
複製程式碼

在子類中替換掉要實現的方法

    class HomeViewController: HLBaseViewController 
 

    override func uiView(uiView: UIView?, CollectEventsType type: AnyObject?, withParams params: AnyObject?) {
        
        NSLog("789")

    }
複製程式碼

相關文章