Objective-C中的nil与swift中的可选项之间的区别是什么,默认情况下存储为nil

时间:2016-06-21 19:29:17

标签: objective-c swift

例如在objective-c中

NSString *test=nil;

以swift为例

var test: String? = nil

2 个答案:

答案 0 :(得分:3)

Swift中的任何内容都是可选的,而不仅仅是对象引用。你可以有一个可选的bool,有三个可能的值nil,false和true。你可以有一个可选的双。这在Objective-C中根本不可用。

在Swift中,对象引用有两种形式:可选和非可选。可选项可以是零或不是零。非选择权不可能是零。在Objective-C中,任何对象引用都可以是nil。

答案 1 :(得分:0)

Swift类型系统会强制您处理test的可选性。如果不首先打开它就无法使用它。

您无法致电test.lowercaseString,因为testString?,可能是nil。你必须先解开它:

if let test = test {
    print(test.lowercaseString)
}
else {
    //test was nil, handle error here
}

在Objective-C中,test只是一个变量,类型系统不知道它是否为零。

NSLog([test lowercaseString]) //Boom goes the dynamite.

您应该阅读the language guide section on this