zl程序教程

您现在的位置是:首页 >  后端

当前栏目

《Swift开发实战》——第2章,第2.7节协议和扩展

扩展协议开发 实战 swift 2.7
2023-09-11 14:17:42 时间

本节书摘来自异步社区《Swift开发实战》一书中的第2章,第2.7节协议和扩展,作者 李宁,更多章节内容可以访问云栖社区“异步社区”公众号查看

2.7 协议和扩展
在Swift语言中,使用关键字protocol来声明一个协议。例如,如下所示的演示代码。

protocol ExampleProtocol {

 var simpleDescription: String { get }

 mutating func adjust()

}

在Swift语言中,类、枚举和结构体都可以实现协议。例如,如下所示的演示代码。

class 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

在上述演示代码中声明SimpleStructure时,关键字mutating用来标记一个会修改结构体的方法。因为类SimpleClass中的方法经常会修改类,所以,在声明SimpleClass时不需要标记任何方法。

可以使用extension来为现有的类型添加功能,比如新的方法和参数。可以使用扩展来改造定义在别处,甚至是从外部库或者框架引入的一个类型,使得这个类型遵循某个协议。例如,如下所示的演示代码。

extension Int: ExampleProtocol {

 var simpleDescription: String {

 return "The number \(self)"

 mutating func adjust() {

 self += 42

}

为现有的类、结构体、枚举类型、协议添加了新功能。扩展和 Objective-C 中的分类类似。 扩展可以: 添加计算属性; 定义方法; 提供新的构造函数; 使现有的类型遵循某协议
《Swift iOS应用开发实战》——导读 随着Swift语言的到来,这种简单、好用又安全的编程语言将吸引更多的开发者加入,让苹果软件生态圈更加繁荣。如此,“果粉”将可以在App Store和Mac Store中下载到更多称心如意的App。从某种意义上说,Swift语言是苹果的一项新的商业战略。
异步社区 异步社区(www.epubit.com)是人民邮电出版社旗下IT专业图书旗舰社区,也是国内领先的IT专业图书社区,致力于优质学习内容的出版和分享,实现了纸书电子书的同步上架,于2015年8月上线运营。公众号【异步图书】,每日赠送异步新书。