swift 中判断方法是否已经被实现

在OC中有个方法可以判断对象方法是否被实现,是responseToSelector,在查找swift是否有这个功能的时候基本上网上都是告诉用这个方法来判断,但是这个方法是根据runtime来判断的,是swift不具备的功能,所以如果用swift调用这个方法会报错,swift是用了另一个机制。
首先用一个例子说明:
如果定义一个代理:

@objc protocol delegate {
    @objc optional func buyBtnClicked()
    @objc optional func makeSureGetHD()
    @objc optional func mailEquipment()
}

定义了3个可选的方法。
首先要判断delegate是否存在,然后在判断方法是否被实现:

if self.delegate?.buyBtnClicked?() == nil {
    // code
}

这么调用就可以了。
self.delegate?如果有delegate会返回一个delegate,如果没有就会返回nil,self.delegate?. buyBtnClicked?(),如果delegate存在并且实现了buyBtnClicked这个方法,那就会调用这个方法,如果代理不存在或者是没有实现这个方法,会返回nil,但是不会崩溃,这样就可以判断方法是否实现,但是要注意在做这个方法的判断的时候如果已经实现了,会直接调用,不要像OC时在判断完在调用一遍方法。

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

推荐阅读更多精彩内容

  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 12,198评论 4 61
  • Swift 介绍 简介 Swift 语言由苹果公司在 2014 年推出,用来撰写 OS X 和 iOS 应用程序 ...
    大L君阅读 3,292评论 3 25
  • *面试心声:其实这些题本人都没怎么背,但是在上海 两周半 面了大约10家 收到差不多3个offer,总结起来就是把...
    Dove_iOS阅读 27,204评论 30 471
  • 2014年12月26日 19:18浏览(89) 论节气冬至已至即进九天寒地冻不出手;阿金出此上联,广招贤人续下联。...
    镇南方良金阅读 317评论 0 2
  • 准备工作: 获取zsh和git,然后通过网络脚本进行安装 然后修改shell 为zsh 最后重启服务器 安装完毕!
    Devid阅读 1,065评论 0 0