扩展和协议

1、扩展:Swift 使用一种扩展机制可以在原有类结构体和枚举 ,格式如下:

  extension 类型名{

  // 新功能

  }

  可以在原类型(类、结构体、枚举)中添加新功能包括:1、实例计算属性和静态计算属性2、实例方法和静态方法3、构造器4、下标。

2、协议:所有方法都是抽象的,称之为协议(protocol) 类似于C# 接口. 协议是高度抽象的,他只有抽象方法名、参数列表和返回值。具体实现 成为 遵守协议既实现接口。

声明协议:

  protocol 协议名{

    // 协议内容  例如 func GetInfo() 不需要实现大括号 []

  }

实现:

  类型 类型名: 父类(可选),协议1,协议2{

    // 具体实现  func GetInfo(){  // 方法实现}

  }

备注 静态协议, 前添加 class 或者static ,class 表示类 ( class func GetName()), static 结构体、枚举 enum EnumImp: Account{ static func GetName(){}}

时间: 2024-10-12 08:43:28

扩展和协议的相关文章

swift3.0 扩展、协议(4)

扩展和协议是swift中的两个特性,用于对已有的类型进行扩展和修改. 扩展(extension) 向已经存在的类型添加新的功能(属性.方法.下标脚本等等),扩展使用extension关键字定义,语法 extension ClassName{ //定义属性.方法等等 ... } 协议(protocol) 用于声明完成某项任务的功能所必须的方法和属性,或者可以理解为一种完成任务的规则,其语法 protocol proName{ //属性.方法 ... }

分类 类扩展 继承 协议 委托

分类 类扩展 继承 协议 委托 分类(Category) 不产生新类,不修改原类,但有自己的.h和.m文件 分类只能向原类中增加方法,或者重写原类的方法 声明的@property只会生成getter setter方法的声明 类.h中定义的方法必须实现,但分类.h中定义的方法,可以不实现 同名方法,分类的优先级高类别主要有3个作用:(1)将类的实现分散到多个不同文件或多个不同框架中.(2)创建对私有方法的前向引用.(类.h中未声明,但存在于.m中的私有方法,通过在分类.h中声明一下,就可以在其他类

对扩展openflow协议的一点思考

软件定义X变得越来越火,正所谓,Software is eating the world. 软件定义网络也是如此.不论是在工业界还是学术界都将是一次伟大的革命,都在紧随着这个行业的方向,找自己的研究点,关注着标准化的进展. 各种Controller,原型系统都相继出现,还有的是是做SDN 的Debug,安全,总之让这个生态系统变得更加健壮.尽管南向接口标准非常多,可是openflow适合我们的学习,社区庞大. 以下记录下自己对这个的一点基本的看法. 1.首先要明白的就是,如同其它通信协议一样,o

OC中类别、扩展、协议与委托

类别(category)--通过使用类别,我们可以动态地为现有的类添加新方法,而且可以将类定义模块化地分不到多个相关文件中.通常只在类别中定义方法. 类别,接口部分的定义,通常该文件命名为已有"类+类别名.h" @interface 已有类 (类别名) //.......方法实现 @end 例如,考虑为NSNumber增加一个类别,则接口部分代码如下 <p style="margin-top: 0px; margin-bottom: 0px; font-family:

Swift语言的扩展与协议(接口)

/* 类型转换 1.没有任何关系的两个类型之间的转换 2.继承链条里的向上与向下转型 */ //第一种形式 let i = 3 let str = "\(i)" let str2 = String(i) //第二种形式 class Parent { var p = 1 } class Child:Parent { var c = 2 } //as是用来转换的 let c: Parent = Child() let cc = c as? Child cc?.c if let ccc =

Swift-----类型转换 、 嵌套类型 、 扩展 、 协议 、 访问控制

1 使用is和as操作符判断和转换数组中的对象类型 1.1 问题 类型转换可以判断实例的类型,也可以将实例看做是其父类或者子类的实例.在Swift中使用is和as操作符实现类型转换. 本案例定义一个媒体类MediaItem,它有两个子类Movie和Song,创建一个存放Movie实例和Song实例的媒体数组library,使用is和as操作符判断和转化library数组中的实例类型. 1.2 方案 使用类型检查操作符is来检查一个实例是否属于特定子类型,如果属于该子类型操作符返回true,否则返

dubbo扩展http协议后FullGC

问题 dubbo内部定制的版本中,在处理大于10K的包的时候,会出现内存溢出的现象 原因是我们在定制dubbo http协议的时候,使用了jboss包里面的HttpRequestDecoder的http decoder方法来解析http协议内容 该方法在解析非http协议的大内容时,会出现内存溢出的情况 某个服务因为这个问题,出现了full gc 的情况 复现问题 根据描述复现该问题 指定dubbo版本 dubbo请求,非http请求 消息体大于10K jvm堆配置,jmap -heap pid

对openflow 1.0协议的扩展

通过这几天对openvswitch代码的分析,以及项目的需要,需要对openflow 1.0进行一定的扩展,发现网上没有这方面的教程,虽然在搞懂ovs代码架构,floodlight controller中利用的事件驱动模型之后,会觉得并不是难事,但是对于刚入门SDN的同学来说,需要一番折腾,这里简单记录一下,希望帮助到其他人.环境配置:2host + 1 OVS + floodlight软件版本: openvswitch 1.9.0 , floodlight0.85  在尝试对ovs中的open

ios信息交互 协议的使用

如果一个协议中定义了某些方法,而某类又实现了该协议,那么该类必须实现这些方法.换句话说,协议是一组公用的方法声明,谁实现协议,谁就负责实现这些方法,不然会有黄色警告.协议可以扩展已有协议.协议的关键字是protocol,以@protocol开始声明,以@end结束.在类中实现协议时,只需要在类名后面加个<协议名>,即可.下面 看代码: 先定义一个协议:eat.h [plain] view plaincopy #import <Foundation/Foundation.h> @pr