美文网首页
Swift4 !和?的区别

Swift4 !和?的区别

作者: George2016 | 来源:发表于2018-01-24 16:47 被阅读44次

问号(?)

  • 声明时添加?,告诉编译器这个是Optional的,如果声明时没有手动初始化,就自动初始化为nil

  • 在对变量值操作前添加?,判断如果变量时nil,则不响应后面的方法。

叹号(!)

  • 声明时添加!,告诉编译器这个是Optional的,并且之后对该变量操作的时候,都隐式的在操作前添加!

  • 在对变量操作前添加!,表示默认为非nil,直接解包进行处理。

举例:

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。

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

相关文章

网友评论

      本文标题:Swift4 !和?的区别

      本文链接:https://www.haomeiwen.com/subject/kvbuaxtx.html