Swift代理报错Optional can only be applied to members of an @objc protocol

报错信息

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")

    }
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 转至元数据结尾创建: 董潇伟,最新修改于: 十二月 23, 2016 转至元数据起始第一章:isa和Class一....
    40c0490e5268阅读 1,757评论 0 9
  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 12,180评论 4 61
  • 月初去旅行时,有一对五十多岁的夫妻,我们坐着一台车。大哥大姐来自天津,大哥个子不高,络腮胡子,背着专业的摄影设备,...
    OuTopos7阅读 514评论 8 4
  • 1. 将经过eclipse编译后的工程目录下bin文件夹拷贝到linux上。如拷贝到/root/TextSort/...
    gz_liuyun阅读 428评论 0 0
  • 早起第一件事就是打开手机,翻看昨晚日记。因为我依稀记得,昨晚写日记到最后已经快睡着了,写了些啥也想不起来。 一看,...
    土川兄一终身建设阅读 369评论 0 0