前几天转了一篇介绍?和感叹号的文章,现在自己搞明白了,记录一下!
1.swift中的可选类型变量表示这个变量可能有值,也可能为空。你可能会想这个直接用一个指针不就搞定了么?但swift是不支持指针的.(这个解释有些牵强,但是在给一个普通变量赋值为nil的时候,会出现语法错误) 。
2.问号和叹号都能声明swift中的可选类型变量,比如:
var num : Int? = 10
var num1 : Int! = 11
3.上边的两中声明方式是有区别的
问号声明的变量 在使用的时候必须强制解包赋值给具体类型的变量
叹号声明的变量 在使用的时候不需要强制解包 这一步编译器已经帮我们做好了
4.声明为可选类型的变量 强制解包(强制解包是在可选变量的后边添加一个叹号)的时候是必须进行判断的,因为可选类型的变量假如是没有值的时候 我们对其强制解包 这样会使程序崩溃
5.可选类型的变量的存储方式是和普通变量的存储方式是不一样的 可选类型默认是有一个none值(也就是nil值) 然后还有一个some用来存储真实的数据
6.个人使用感想:在初始化的时候不确定这个属性是否有值的时候可以使用可选类型,至于选择强制解包,还是隐式解包这个根据个人习惯吧!
原文:http://www.cnblogs.com/Sunnyheart/p/4986847.html