例如在objective-c中
NSString *test=nil;
以swift为例
var test: String? = nil
答案 0 :(得分:3)
Swift中的任何内容都是可选的,而不仅仅是对象引用。你可以有一个可选的bool,有三个可能的值nil,false和true。你可以有一个可选的双。这在Objective-C中根本不可用。
在Swift中,对象引用有两种形式:可选和非可选。可选项可以是零或不是零。非选择权不可能是零。在Objective-C中,任何对象引用都可以是nil。
答案 1 :(得分:0)
Swift类型系统会强制您处理test
的可选性。如果不首先打开它就无法使用它。
您无法致电test.lowercaseString
,因为test
是String?
,可能是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.