首页 > 其他分享 >协议可选方法 swift

协议可选方法 swift

时间:2022-09-02 14:36:17浏览次数:61  
标签:协议 protocol optional 方法 func SomeProtocol swift

@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”)
  }
}

 

标签:协议,protocol,optional,方法,func,SomeProtocol,swift
From: https://www.cnblogs.com/huangzs/p/16649759.html

相关文章

  • 原生js处理数组数据小方法
    <ulid="ul"></ul><script>//假设这是一组数据,要渲染到页面页面vararr=[{msg:"nisjsiqi",img:"https://img1.baidu.com/it......
  • appium之元素定位方法
    AppUI自动化,appium使用最频繁的应该就是定位元素了Appium常用的元素属性值:resource-id:此属性值是唯一的,元素如果有resource-id属性,优先选择resource-id,定位方法:d......
  • C#|在List集合为NULL时需要添加数据的处理方法
    最近写了一个循环往字典的Value值添加数据的程序(字典的Value为一个List),经常碰到“Objectreferencenotsettoaninstanceofanobject”,就自己去了解了一下空集合和......
  • 面向对象(方法、继承、重写)
    前言本文主要介绍方法(实例方法、类方法、静态方法)、继承(单继承和多继承)以及重写等内容。一、方法1、实例方法用户自定义的方法。classStudent:#类属性stu......
  • js数组方法
    修改器方法会改变自身的值push(element1,...,elementN):在数组的末尾增加一个或多个元素,并返回数组的新长度。pop():删除数组的最后一个元素,并返回这个元素(数组为空......
  • Linux软件包常见的几种下载、安装方法
    在线源下载和安装如果服务器是处于在线状态,在使用默认下载源是外国的情况下,安装更新软件包往往会比较痛苦的存在,下载了许久来一个超时就gg了。国内有许多镜像源,完美的解决......
  • c#线程池使用之_回调方法中传递多个参数的处理
    如题,在这里主要是做个关于线程池使用过程中回调方法需要用到多个参数的时候的场景 下面中的代码做个例子:我需要用到一个WebClientDown2来去远程地址下载一个文件保存到......
  • 改变 this 指向的方法 call()、apply()、 bind()的区别 ?
    call()第一个参数是this的新指向;第二个参数是要传入函数的参数letcat={name:"喵喵"}letdog={name:"旺财",eat(food){......
  • mybatis的实体类属性不存入数据库的排除方法
    网上有很多排除方法,但是因为框架问题都不适用,姑且展示一下1.@Transient该注解只适用于hibernate框架,在实体类(pojo)属性上使用、表示数据库表中没有这个字段就忽略;2.@Table......
  • EasyCVR级联时传输协议选择TCP,上级平台播放失败的原因排查与解决办法
    EasyCVR视频融合平台部署轻快、功能灵活,可支持多协议、多类型设备接入,在视频能力上,可实现视频直播、录像、回放、检索、云存储、告警上报、集群以及平台级联等。其中平台级......