类可以从另一个类继承方法,属性和其他特性.当一个类继承自另一个类时,继承类称为子类,它继承的类称为其超类.继承是一种基本行为,它将类与Swift中的其他类型区分开来. Swift中的类可以调用和访问属于其超类的方法,属性和下标,并可以提供这些方法,属性和下标的自己的重写版本,以优化或修改它们的行为.Swift通过检查覆盖定义是否具有匹配的超类定义来帮助确保覆盖是正确的. 类还可以将属性观察器添加到继承的属性,以便在属性值更改时得到通知.属性观察者可以添加到任何属性,无论它最初是被定义为存储属性还…
原文:Swift语言指南(十)--字符串与字符 字符串是一段字符的有序集合,如"hellow,world"或"信天翁".Swift 中的字符串由 String 类型表示,对应着 Character 类型值的集合. Swift 中的 String 类型为你的编程提供了一个高速的,兼容 Unicode规范 的文本处理方式.Swift 创建和处理字符串的语法轻量可读,与 C 语言的字符串语法颇为相似.字符串的拼接非常简单,只需将两个字符串用 + 运算符相加.字符串的值是否…
Using Other Message Types - 使用其他消息类型 可以将其他消息类型用作字段类型.例如,假设您希望在每个SearchResponse消息中包含Result消息--为此,您可以在同一.proto中定义Result消息类型,然后在SearchResponse中指定类型为Result的字段: message SearchResponse { repeated Result results = 1; } message Result { string url = 1; strin…
错误处理是响应程序中的错误条件并从中恢复的过程.Swift为在运行时抛出,捕获,传播和操纵可恢复的错误提供了一流的支持. 某些操作无法保证始终完成执行或生成有用的输出.Optionals用于表示缺少值,但是当操作失败时,了解导致失败的原因通常很有用,这样您的代码就可以做出相应的响应. 例如,考虑从磁盘上的文件读取和处理数据的任务.此任务可能有多种失败方式,包括指定路径中不存在的文件,没有读取权限的文件或未以兼容格式编码的文件.区分这些不同的情况允许程序解决一些错误并向用户传达它无法解决的任何错误…
一个枚举定义了一个通用型的一组相关的值,使你在你的代码中的一个类型安全的方式这些值来工作. 如果您熟悉C,您将知道C枚举将相关名称分配给一组整数值.Swift中的枚举更灵活,并且不必为枚举的每个案例提供值.如果为每个枚举情况提供了一个值(称为原始值),则该值可以是字符串,字符或任何整数或浮点类型的值. 或者,枚举情况可以指定要与每个不同的案例值一起存储的任何类型的关联值,就像其他语言中的联合或变体一样.您可以将一组公共相关案例定义为一个枚举的一部分,每个枚举都有一组与其关联的适当类型的不同值.…
委托启用其他语言(如C ++,Pascal和Modula)已使用函数指针进行寻址的方案.但是,与C ++函数指针不同,委托是完全面向对象的,与成员函数的C ++指针不同,委托封装了对象实例和方法. 委托声明定义了从类派生的类System.Delegate.委托实例封装了一个调用列表,该列表是一个或多个方法的列表,每个方法都被称为可调用实体.对于实例方法,可调用实体由该实例上的实例和方法组成.对于静态方法,可调用实体仅包含一个方法.使用适当的参数集调用委托实例会导致使用给定的参数集调用每个委托的可…
可选链接是一个查询和调用当前可选的可选项的属性,方法和下标的过程nil.如果optional包含值,则属性,方法或下标调用成功; 如果是可选的nil,则返回属性,方法或下标调用nil.多个查询可以链接在一起,如果链中的任何链接,整个链都会正常失败nil. 注意 Swift中的可选链接类似于nilObjective-C中的消息传递,但其方式适用于任何类型,并且可以检查其成功与否. 可选链接作为强制解包的替代方法 您可以通过?在可选值之后放置一个问号()来指定可选链接,如果可选值为非,则在该值上调用…
初始化是准备要使用的类,结构或枚举的实例的过程.此过程涉及为该实例上的每个存储属性设置初始值,并执行在新实例准备好使用之前所需的任何其他设置或初始化. 您可以通过定义实现这个初始化过程初始化,这就像特殊的方法,可以被调用来创建特定类型的新实例.与Objective-C初始值设定项不同,Swift初始值设定项不返回值.它们的主要作用是确保在第一次使用之前正确初始化类型的新实例. 类类型的实例也可以实现deinitializer,它在释放该类的实例之前执行任何自定义清理.有关取消初始化的详细信息,请…
类,结构和枚举可以定义下标,下标是用于访问集合,列表或序列的成员元素的快捷方式.您可以使用下标按索引设置和检索值,而无需单独的设置和检索方法.例如,您可以访问在元素Array实例作为someArray[index]和元素的Dictionary实例作为someDictionary[key]. 您可以为单个类型定义多个下标,并根据传递给下标的索引值的类型选择要使用的相应下标重载.下标不限于单个维度,您可以定义具有多个输入参数的下标,以满足您的自定义类型的需求. 下标语法 下标使您可以通过在实例名称后…
属性将值与特定类,结构或枚举相关联.存储的属性将常量和变量值存储为实例的一部分,而计算属性则计算(而不是存储)值.计算属性由类,结构和枚举提供.存储的属性仅由类和结构提供. 存储和计算属性通常与特定类型的实例相关联.但是,属性也可以与类型本身相关联.这些属性称为类型属性. 此外,您可以定义属性观察器以监视属性值的更改,您可以使用自定义操作进行响应.可以将属性观察器添加到您自己定义的存储属性中,也可以添加到子类从其超类继承的属性中. 存储属性 在其最简单的形式中,存储属性是一个常量或变量,存储为特…