<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>

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                屬性關聯特定的類、結構和枚舉的值。存儲的屬性存儲常量和變量的值作為實例的一部分。 下面以User類為大家介紹屬性,先上全部類代碼。 ~~~ class DataImporter { var fileName = "data.txt" init() { print("初始化") } } private class Users { // 有默認值的屬性 var id = 0 // 只指定類型的屬性,有可能存儲nil var name:String? // 懶加載,只是使用的時候才會初始化 lazy var importer = DataImporter() // get、set var qqTemp:String = "" var qq:String { // 如果使用get和set則不能使用當前屬性名賦值,以免死循環 // 獲得 get { print("獲得") return self.qqTemp } // 設置 set { print("傳入值:\(newValue)") self.qqTemp = newValue } } // 只讀,read-only var height: Int { return 180 } // 屬性觀察 var address:String = "" { willSet { print("新地址:\(newValue)") } didSet { print("舊地址:\(oldValue)") } } // 靜態變量 static var storedTypeProperty = "Some value." } ~~~ ## 基礎屬性 在類和結構體中可以建立存儲屬性,可以是常量、變量或枚舉。也可以為屬性設置初始值或不設置初始值。 ~~~ private class Users { // 有默認值的屬性 var id = 0 // 只指定類型的屬性,有可能存儲nil var name:String? } ~~~ 使用: ~~~ let user = Users() // 有初始值 print("\(user.id)") // 0 // 無初始值 print("\(user.name)") // nil ~~~ ## 懶加載屬性 你可以給屬性添加初始值,但是有的時候你添加的初始值是一個很大的對象,但你只希望使用它的時候才初始化。這就需要用到懶加載,懶加載屬性就是當我們首次使用的時候才會創建并分配存儲空間。懶加載的關鍵字是lazy。 ~~~ // 懶加載,只是使用的時候才會初始化 lazy var importer = DataImporter() class DataImporter { var fileName = "data.txt" init() { print("初始化") } } print("\(user.importer.fileName)") // 先輸出"初始化",后輸出"data.txt" ~~~ ## Getter和Setter 我們都知道點方法的實質是調用get和set方法,在swift中也有get和set方法。 ~~~ var qqTemp:String = "" var qq:String { // 如果使用get和set則不能使用當前屬性名賦值,以免死循環 // 獲得 get { print("獲得") return self.qqTemp } // 設置 set { print("傳入值:\(newValue)") self.qqTemp = newValue } } user.qq = "937447974" // 傳入值:937447974 print("\(user.qq)") // 獲得 937447974 ~~~ 如上所示,在屬性中我們可以更加精確的控制get和set方法。在set中,newValue就是外部傳入的值。 ## 只讀屬性 在swift中也支持屬性只讀,簡單點就是只寫get方法,不寫set方法。但是swift考慮這種情況有更好的方式實現。 ~~~ // 只讀,read-only var height: Int { return 180 } ~~~ ## 屬性觀察 有的時候,你可能想監聽設置屬性的操作,同時又想使用當前屬性名。因為get和set中是不能使用當前屬性名的,鑒于這種情況,swift提供了兩種操作符: - willSet:設置前調用,newValue代表外部傳入值; - didSet:設置后調用,didSet代碼原始值。 ~~~ // 屬性觀察 var address:String = "" { willSet { print("新地址:\(newValue)") } didSet { print("舊地址:\(oldValue)") } } //屬性觀察 willSet將設置,didSet已設置 user.address = "北京" // 新地址:北京 舊地址: user.address = "天安門" // 新地址:天安門 舊地址:北京 ~~~ ## 靜態變量 在swift中也支持靜態變量static,使用靜態變量只需要使用類名。 ~~~ // 靜態變量 static var storedTypeProperty = "Some value." // 靜態變量 Users.storedTypeProperty = "static" print("\(Users.storedTypeProperty)") // static ~~~ ## 其他 ### 參考資料 [The Swift Programming Language (Swift 2.1)](https://developer.apple.com/library/ios/documentation/Swift/Conceptual/Swift_Programming_Language/ErrorHandling.html) ### 文檔修改記錄 | 時間 | 描述 | |-----|-----| | 2015-10-29 | 根據 [The Swift Programming Language (Swift 2.1)](https://developer.apple.com/library/ios/documentation/Swift/Conceptual/Swift_Programming_Language/ErrorHandling.html)中的Classes and Structures總結 | 版權所有:[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>

                              哎呀哎呀视频在线观看