iOS-swift-协议和拓展
Posted 孟栋sky
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了iOS-swift-协议和拓展相关的知识,希望对你有一定的参考价值。
1 协议(protocol
)
使用关键字 protocol 创建协议。
protocol ExampleProtocol { var simpleDescription: String { get } mutating func adjust() }
类、枚举和结构体都支持协议。
lass SimpleClass: ExampleProtocol { var simpleDescription: String = "A very simple class." var anotherProperty: Int = 69105 func adjust() { simpleDescription += " Now 100% adjusted." } } var a = SimpleClass() a.adjust() let aDescription = a.simpleDescription struct SimpleStructure: ExampleProtocol { var simpleDescription: String = "A simple structure" mutating func adjust() { simpleDescription += " (adjusted)" } } var b = SimpleStructure() b.adjust() let bDescription = b.simpleDescription
注意关键字 mutating
,在结构体 SimpleStructure 中使用 mutating 实现协议中的方法。而在类中 SimpleClass,却不需要关键字 mutating 实现协议方法,因为类中方法本身就不需要关键字mutating 声明。
2 拓展(extension
)
使用关键字 extension 创建一个已存在类型的拓展。
extension Int: ExampleProtocol { var simpleDescription: String { return "The number \(self)" } mutating func adjust() { self += 42 } } print(7.simpleDescription)
恩,努力。
以上是关于iOS-swift-协议和拓展的主要内容,如果未能解决你的问题,请参考以下文章
AppDelegate 中的 UIActivityView 使用协议和委托