标签:
?相当于给属性套上一层包,即为一个Optional值,而Optional有None和Some两个值,该属性在定义时未初始化结果就是swift自动初始化为nil值(就是Optional中的None,本质上是有值的),在使用过程中当该属性为nil时其实其值为.None而进行判断;秉着严谨的态度我们应该在使用前进行 if value {}的判断;而!是相对于隐式拆包,在调用过程都会默认的添加上!;
SO:在控制器中我们已确定添加的控件在viewDidLoad中初始化,且基本不会在生命周期内销毁,所以考虑都用! 而相对的一些常变的string,cgfloat类型的属性,在周期内可能为空,所以用?
作用:属性中?是为了避免为nil而crash,而!避免重复判断,高效而简洁
标签:
原文地址:http://www.cnblogs.com/hazhede/p/5514678.html