iOS知识点-16. 用Swift 将协议(protocol)中的部分方法设计成可选(optional),该怎样实现?

Swift vs. Objective-C
  1. 用Swift 将协议(protocol)中的部分方法设计成可选(optional),该怎样实现?

@optional@required是Objective-C中特有的关键字。

Swift中,默认所有方法在协议中都是必须实现的。而且,协议里方法不可以直接定义optional。先给出两种解决方案:

  • 在协议和方法前都加上@objc关键字,然后再在方法前加上 optional 关键字。该方法实际上是把协议转化为Objective-C的方式然后进行可选定义。示例如下:
* @objc protocol SomeProtocol {
*   func requiredFunc()
*   @objc optional func optionalFunc()
* }
  • 用扩展(extension)来规定可选方法。Swift中,协议扩展(protocol extension)可以定义部分方法的默认实现,这样这些方法在实际调用中就是可选实现的了。示例如下:
* protocol SomeProtocol {
*   func requiredFunc()
*   func optionalFunc()
* }
* 
* extension SomeProtocol {
*   func optionalFunc() {
*     print(“Dumb Implementation”)
*   }
* }
* 
* Class SomeClass: SomeProtocol {
*   func requiredFunc() {
*     print(“Only need to implement the required”)
*   }
* }
上一题 目录 下一题
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 16,517评论 4 61
  • 1 下午颇有兴趣的去上一节日本語听力课,可想而知,扎心了,老铁。依然还是那么的令人发指,语速能慢一点吗?木村先生带...
    榆念芗行阅读 473评论 0 2
  • 最近我迷上了自行车,我以前骑的都是有辅助轮子的自行车,骑的超快!每次看着妈妈骑共享单车我就特别兴奋,今天吃...
    w小亦阅读 294评论 0 0
  • 生活总是充满矛盾,太多的事情事与愿违。猫喜欢吃鱼,它又不会游泳;在我想要得到好成绩的时候,有人不赞同;在我最好的年...
    清晨光照阅读 184评论 0 0
  • 今天朋友来访,约好了一起在这个城市逛逛,在去接朋友的间隙,听了40多分钟的听力,现在感觉棒棒哒,本来计划晚上到家继...
    捣姜女阅读 224评论 0 0

友情链接更多精彩内容