*强制解析*
* init ? 构造函数,?表示不一定能够实例化出对象
* !表示告诉编译器一定有值,编译能够通过,如果运行时没有值就会直接崩溃
* 提示:?和 !是所有刚刚接触Swift 的OC程序员最蛋疼的问题,前期开发要注意多看文档和利用编译器提示解决(option + click)
let url = NSURL(String: "http://www.baidu.com")
'' let url = NSURL(String: "http://www.baidu.com/"美女)
// 如果强制解析OptionalValue, 但是OptionalValue中没有值时会引发一个运行时错误
'' print(url!)
// 需要考虑url是否有值
'' if url != nil{
'' let request = NSURLRequest(URL: url!)
'' }
*可选绑定*
* 不需要考虑url是否有值,能进入{}一定有值
* 不仅可以用来判断可选类型中是否有值,同时可以将可选类型中的赋值给一个常量或者变量
* 可选绑定可以用在if和while语句中
* 提示 : 在实际开发中,使用非常频繁
if let url3 = NSURL(string: "http://www.baidu.com/"){
'' let request = NSURLRequest(URL: url3)
'' }
*隐式解析可选类型(implicitly unwrapped optionals)*
* 有时候在程序架构中,第一次被赋值之后,可以确定一个可选类型\_总会\_有值。在这种情况下,每次都要判断和解析可选值是非常低效的,因为可以确定它总会有值
* 隐式解析可选类型, 并不需要每次都使用解析来获取可选值, 一个隐式解析可选类型其实就是一个普通类型,但是可以被当做非可选类型来使用
* 格式: 将可选类型后面的?改为!
let bigButton: UIButton!
* 注意:
> * 如果一个变量之后可能变成nil的话请不要使用隐式解析可选类型。如果你需要在变量的生命周期中判断是否是nil的话,请使用普通可选类型
'' let url3: NSURL? = NSURL(string: "http://www.baidu.com/")
'' let url4: NSURL! = NSURL(string: "http://www.baidu.com/")
'' print(url3!) // 需要惊叹号来获取值
'' print(url4) // 不需要感叹号