Swift--13协议使用

/*

作用:

1Protocol(协议)用于统一方法属性名称,而不实现任何功能

2、协议能够被类,枚举,结构体实现,满足协议要求的类型被称为协议的遵循者。

3、遵循者需要提供协议指定的成员,如属性方法,操作符,下标等


语法:

protocol 协议名 {

属性方法

}

struct 类型:协议一,协议二 {

协议中的属性方法的实现

class 类型:父类,协议一,协议二 {

}

说明:

1、协议本身不实现任何功能,但你可以将它当做类型来使用

2、协议也可以继承一个或多个(用逗号隔开)其它协议

3、协议中也可添加可选的属性方法,并且只对类有效

(协议前添加@objc说明是可选的,属性方法添加optional)

*/


@objc protocol AddProtocol {

//只读

var a:Int {get}

//可读可写

var b:Int {getset}

//普通方法

func add() ->Int

@objcoptional var c:Int {get}

@objcoptional func optionalFunc()

}


protocol SubProcotol {

func sub()->Int

}


class Calculate: NSObject,AddProtocol,SubProcotol {

var a:Int {

return100

}

var b:Int = 0

func add() ->Int {

returna+b

}

func sub() ->Int {

returna-b

}

}


var calc = Calculate()

//calc.a = 100

calc.b =200

print(calc.add())

print(calc.sub())


let c2 = calcas AddProtocol

//这样调用会前置解包,解包失败会崩溃

//c2.optionalFunc!()

//这样调用会隐式解包,解包失败返回nil

c2.optionalFunc?()

相关文章

软件简介:蓝湖辅助工具,减少移动端开发中控件属性的复制和粘...
现实生活中,我们听到的声音都是时间连续的,我们称为这种信...
前言最近在B站上看到一个漂亮的仙女姐姐跳舞视频,循环看了亿...
【Android App】实战项目之仿抖音的短视频分享App(附源码和...
前言这一篇博客应该是我花时间最多的一次了,从2022年1月底至...
因为我既对接过session、cookie,也对接过JWT,今年因为工作...