《写给大忙人看到Swift》第4章.可空类型 阅读笔记

4.1 可空类型和nil

  • Swift中,nil可用于表示任意类型的数据缺失值的情况,而在Objective-C中,nil表示某个指针所指向的对象不存在。
  • Swift的类型系统消除了OC存在无效值的情况,强制使用nil来代表无效值,同时明确规定,只有可空类型允许存储nil值。

4.2 有效性检查、可空绑定和强制拆箱

  • 有效性检查:通过if语句来判断一个可空类型是否包含了有效值,需要判断它是否不等于nil。
    换言而之,通过if optionalValue != nil,如果YES则可空类型包含有效值,否则没有包含有效值。
  • 可以直接对一个可空类型的值进行“==”比较而并不需要事先拆箱。 即“==”操作是对可空类型中存放的值进行比较,而不是对可空本身进行比较。
  • 可以通过“可空绑定”将可空类型的值拆箱到常量或者变量中(使用let或者var)。

4.3 可空链

  • 可空链允许用单个的步骤访问一连串的可空值,无论是属性、方法还是下标。
  • 用“?”代替“!”对可空链的节点进行类似于强制拆箱的操作,每一个节点的可空值都会被检查,只有在值存在的情况下,下一步操作才会继续执行。如果任何一个节点返回nil,则整个可空链返回nil。但是,如果最后一步操作返回的是非可空值,它也会被隐式地包装为可空类型。

4.4 带隐式拆箱的可空

  • 要创建一个带隐式拆箱的可空类型,只需要用“!”取代“?”即可。
  • 带隐式拆箱的可空总是被假定是有值的,因此在访问它们时,不需要进行强制拆箱。也就是说,不再需要使用“!”来访问它的值。
  • 在一旦初始化即可保证有值的对象上使用带隐式拆箱的可空类型。

你可能感兴趣的:(《写给大忙人看到Swift》第4章.可空类型 阅读笔记)