第六节 协议(Protocol)和扩展(Extension)
2014-06-18 00:00
99 查看
本文来自于疯子们的开源图书
使用protocol来声明一个协议。
类,枚举,结构体都可以适用协议。
实验:写一个遵守这个协议的枚举.
注意使用关键词mutating在声明简单结构体(simpleStructure)来标记修改结构体的方法。简单类(simpleClass)的声明不需要其任何方法标记为改变的,因为类方法总是修改类。
使用扩展(extension)给现有的类型添加功能,如新方法和计算属性。你可以使用扩展让类型遵循额外的协议,比如在其他地方声明的类型,甚至是从库或框架中导入的类型。
试验:为Double类型添加一个扩展,给它添加一个absoluteValue属性。
你可以使用一个协议名就像任何其他的命名类型--例如,创建一个有多个对象的集合,这些对象具有不同的类型,但是他们都遵守同一个协议。当你使用一个协议类型的变量的时候,协议定义之外的方法将不可用。
虽然protocolValue变量有一个叫做SimpleClass的运行时类型,编译器仍然把它当作ExampleProtocol这个给定的类型。这就意味着除了类遵循了这个协议的方法或者属性,类其他的访问或者属性你是不能随便访问的。
使用protocol来声明一个协议。
类,枚举,结构体都可以适用协议。
实验:写一个遵守这个协议的枚举.
注意使用关键词mutating在声明简单结构体(simpleStructure)来标记修改结构体的方法。简单类(simpleClass)的声明不需要其任何方法标记为改变的,因为类方法总是修改类。
使用扩展(extension)给现有的类型添加功能,如新方法和计算属性。你可以使用扩展让类型遵循额外的协议,比如在其他地方声明的类型,甚至是从库或框架中导入的类型。
试验:为Double类型添加一个扩展,给它添加一个absoluteValue属性。
你可以使用一个协议名就像任何其他的命名类型--例如,创建一个有多个对象的集合,这些对象具有不同的类型,但是他们都遵守同一个协议。当你使用一个协议类型的变量的时候,协议定义之外的方法将不可用。
虽然protocolValue变量有一个叫做SimpleClass的运行时类型,编译器仍然把它当作ExampleProtocol这个给定的类型。这就意味着除了类遵循了这个协议的方法或者属性,类其他的访问或者属性你是不能随便访问的。
相关文章推荐
- 第六节 协议(Protocol)和扩展(Extension)
- OC - 第七章 类的扩展: 类目Category, 延展Extension, 协议Protocol ( 一 )
- Swift中扩展extension与协议protocol
- [绍棠_Swift] Swift中扩展extension、协议protocol
- OC - 第七章 类的扩展: 类目Category, 延展Extension, 协议Protocol ( 二 )
- 类目category 扩展extension 协议protocol
- 【iOS】Swift中扩展extension与协议protocol
- 【iOS】Swift扩展extension和协议protocol
- 【iOS】Swift中扩展extension与协议protocol
- iOS经典讲解之Swift枚举(Enum)、协议(protocol)、扩展(Extension)
- OC中的类别Category-协议Protocol-扩展Extension
- swift3新路程(10)协议protocol和扩展extension
- iOS杂记——category分类、extension扩展、protocol协议
- Swift 协议(protocol)和扩展(extension)
- Objective-C分类 (category),扩展(Extension)和协议(protocol)
- MIME(Multipurpose Internet Mail Extension,多用途Internet邮件扩展)协议
- 浏览器扩展系列————异步可插入协议(pluggable protocol)的实现
- 01 类目Category、延展Extension、协议Protocol、计数器的使用NSTimer
- Swift 接口和扩展(Protocol&Extension)
- 浏览器扩展系列————异步可插入协议(pluggable protocol)的实现