<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                合規國際互聯網加速 OSASE為企業客戶提供高速穩定SD-WAN國際加速解決方案。 廣告
                了解過設計模式的人都知道責任鏈模式(如果你不知道什么是責任鏈模式,可以閱讀我的博文《[23設計模式之責任鏈模式 (COR)](http://blog.csdn.net/y550918116j/article/details/48596903)》),在OC的手勢響應鏈也是基于這種模式開發的。 責任鏈模式的核心可以理解為 ~~~ if { } else if { } else { } ~~~ 如果每一次都這樣寫,代碼就特別多,也不美觀。 Swift考慮到這種情況設計了可選鏈,可選鏈的核心是兩個操作符號: - **?**:當’?’前有值時,執行’?’后面代碼,為nil時不執行’?’后面的代碼;如果是賦值的時候使用,則意味著這個常量、變量可能為有值或nil。 - **!**:不管’!’前有值還是nil,都執行‘!’后面的代碼,你可以理解為強制調用;如果是賦值的時候使用,則意味著這個常量、變量一定有值。 ‘!’要慎重使用,不然會引起程序崩潰,app閃退。 這里設計兩個類: ~~~ class Residence { var numberOfRooms = 1 } class Person { // 可選屬性,可能為nil或Residence類 var residence: Residence? } ~~~ 在Person中有個引用類型的屬性residence,這個屬性可以是nil也可以是Residence類,這就是一個可選屬性。 下面給大家介紹可選鏈的使用。 ### 可選獲得 ~~~ let john = Person() john.residence = Residence() // 可選獲得 var roomCount = john.residence?.numberOfRooms ~~~ ### 強制獲得 如果你已經確定這個屬性有值是,你可以使用‘!’強制獲得。 ~~~ // 強制獲得 roomCount = john.residence!.numberOfRooms print(roomCount) // Optional(1) Optional代表可選 ~~~ ### if獲得 在上面兩種方式都比較麻煩,第一種方式,當你去使用的時候,你還需要去if判斷;第二種方式,不是每一次都能強制調用成功的,當為nil時強制調用,會引起程序崩潰。處于這種情況,我們可以結合if使用更優雅的方式獲得。 ~~~ // if獲得 if let roomCount = john.residence?.numberOfRooms { print(roomCount) // 1 } ~~~ ## 其他 ### 參考資料 [The Swift Programming Language (Swift 2.1)](https://developer.apple.com/library/ios/documentation/Swift/Conceptual/Swift_Programming_Language/ErrorHandling.html) ### 文檔修改記錄 | 時間 | 描述 | |-----|-----| | 2015-11-1 | 根據 [The Swift Programming Language (Swift 2.1)](https://developer.apple.com/library/ios/documentation/Swift/Conceptual/Swift_Programming_Language/ErrorHandling.html)中的Optional Chaining總結 | 版權所有:[http://blog.csdn.net/y550918116j](http://blog.csdn.net/y550918116j)
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看