Nullability 空特性修饰符

Swift 刚刚面世的时候,它和 Objective-C 之间可谓是泾渭分明, Swift 里的很多特性,是 Objective-C 完全没有的。之后 Objective-C 中加入了「泛型」的概念,除此之外,苹果还加入了一种新的特性,就是「空特性修饰符」(nullability annotation)。

Objective-C 里,使用 nil 值其实并不严格,但是引进了空特性修饰符语法之后,就可以明确我们使用的对象是否为空。它有一点类似 Swift 的可选项,所以 Swift 开发者在学习和使用这个语法的时候会更得心应手一些。

和前面提到的泛型比起来,空特性修饰符对 Objective-C 的影响更大。如果你用了这个语法,就要仔细检阅每一个文件,确保你的每一个属性和方法都用的是正确的修饰符。

注意了,Objective-C 的这个空特性修饰符和泛型一样,都是轻量级的语法,目的是让 Objective-C 能更平滑地向 Swift 过渡,所以这两种语法在 Objective-C 里都是有局限性的,你不能把它们和 Swift 中的泛型和可选项当成一码事。

在正式开始学习空特性修饰符之前,我还是要再啰嗦一下这些注意事项:

  1. 不要把 Objective-C 的空特性修饰符当成是 Swift里面的可选项;
  2. 学习 Objective-C 的空特性修饰符会帮你更好地理解 Swift 的可选项;
  3. 你要仔细审阅每一个文件里的所有属性和方法;
  4. 每一个文件是相对独立的,也就是说,你可以单独在某一个文件里用到这个语法。

小提示:

你可以打开 build setting 里的 Incorrect Uses of Nullable Values,默认情况下这个功能是关闭的。也可以依次点击 Product > Analyze,打开分析器。这些功能都可以帮你检查代码错误。

results matching ""

    No results matching ""