Swift中?和!的区别

1.常量和变量安全

Swift语言中是用let来定义常量,而且要初始化。var来定义变量,在let或者var后面申明类型,冒号+空格,而后再加上类型名称app

2.optional(可选)变量 可选变量用于处理值缺失的状况,有点相似于OC中的nil,能够用于任何类型上,不单单是类,不过更加安全。Swift是类型安全的一门语言,能够不多申明类型 Swift和Objective-C中nil的区别 1)OC中,nil是一个指向不存在对象的指针; 2)Swift中,nil不是指针,它是一个肯定的值,用于表示值缺失。任何类型的可选状态均可以设置为nil,不仅是对象类型;指针

3.深刻了解Optional变量 Optional其实就是一个enum,里面有None和Some类型。nil就是Optional.None,非nil就是Optional.Some,经过Some(T)包装原始值,因此在是用Optional的时候要进行拆包。 声明一个可选类型的时候要在类型后面加上? 如:var str : String? var strValue: String? 意思不是“我声明了一个Optional的String值”,而是我声明了一个Optional类型值。 对一个可选类型的值,须要进行拆包才不会报错。 拆包有两种方式,以下: 1)Optional Binding 如: ``` if let str = strValue { let hashValue = str.hashValue }code

2)经过! str!
对于会在viewDidLoad进行初始化的变量,能够直接定义为var str :String!叫作Implicitly Unwrapped Optionals,称为隐式拆包,在进行操做的时候也须要添加!进行拆包。

?的使用场景:
1)声明Optional值变量
2)在对Optional值操做中,用来判断是否能响应后面的操做

!的使用场景:
1)强制对Optional值进行拆包
2)声明隐式拆包变量,通常用于类中的属性
相关文章
相关标签/搜索