Swift4 !和?的区别

2018-01-24  本文已影响44人  George2016

问号(?)

叹号(!)

举例:

var btn1 : UIButton?
var bnt2 : UIButton!
override func viewDidLoad() {
    super.viewDidLoad()
    btn1?.setTitle("OK", for: UIControlState.normal)
    bnt2.setTitle("NO", for: UIControlState.normal)
}

很明显,感叹号声明的属性在使用的时候已经隐式强制解包了。

不管是问号声明属性还是感叹号声明属性,他们声明的都是可选类型,都会在声明的时候如果没有手动初始化,swift会自动将该变量初始化为nil。

主要区别在于,使用的时候会不会主动解包。

上一篇 下一篇

猜你喜欢

热点阅读