美文网首页
Swift—强制解析&可选绑定&隐式解析可选类型

Swift—强制解析&可选绑定&隐式解析可选类型

作者: Windv587 | 来源:发表于2016-11-29 17:11 被阅读152次

    *强制解析*

    * 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)  // 不需要感叹号

    相关文章

      网友评论

          本文标题:Swift—强制解析&可选绑定&隐式解析可选类型

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