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

                ??碼云GVP開源項目 12k star Uniapp+ElementUI 功能強大 支持多語言、二開方便! 廣告
                在Swift中,類和結構體是通用且靈活的架構,枚舉是一組相關的值的集合,并允許你在代碼中使用它們。你可以在類和結構體中添加屬性和方法,如常量、變量和函數。 相對于其他編程語言,當你想創建類和結構體時,需要創建接口文件和實現文件。Swift不需要你創建接口文件和實現文件,如玩過OC的朋友都知道.h和.m文件。在Swift中,當你想創建類和結構體時,只需要創建一個文件。這個類和結構的外部接口可自動給其他代碼使用。 ## 比較類和結構體 類和結構體有很多共同點: - 為存儲值聲明屬性; - 定義函數的方法; - 定義下標并支持下標語法; - 為屬性設置初始值; - 可擴展; - 為子類提供規范。 類支持的功能而結構體不支持的功能有: - 可繼承,使一個類繼承另一個類的特性; - 在運行過程中,可轉換類型; - 在類銷毀時釋放資源; - 引用計數運行多個引用到同一個類實例。 ### 定義語法 類和結構體的定義語法是相似的,只是定義類用的關鍵字是class,定義結構體的關鍵字是struct。下面定義了一個空的類和結構體: ~~~ class SomeClass { } struct SomeStructure { } ~~~ 這里定義了有屬性的類和結構體: ~~~ struct Resolution { var width = 0 var height = 0 } class VideoMode { var resolution = Resolution() var interlaced = false var frameRate = 0.0 var name: String? } ~~~ 可以看出,在類VideoMode中resolution指向一個結構體,name是一個可為nil或String類型的數據,其他屬性都指定了默認值。 ### 類和結構體初始化 ~~~ let someResolution = Resolution() let someVideoMode = VideoMode() ~~~ ### 訪問屬性 訪問類和結構體的屬性可以使用點語法。 ~~~ print("someResolution.width:\(someResolution.width)") // 0 print("someVideoMode.resolution.width:\(someVideoMode.resolution.width)") // 0 ~~~ 你還可以通過點語法改變類或結構體中的數據。 ~~~ someVideoMode.resolution.width = 1280 print("someVideoMode.resolution.width:\(someVideoMode.resolution.width)") // 1024 ~~~ ### 通過成員初始化結構體 我們可以通過結構體的成員初始化結構體。這能幫我們快速初始化結構體,但是,初始化的過程必須全部成員一起初始化。 ~~~ let vga = Resolution(width: 640, height: 480) ~~~ ## 結構體和枚舉是值類型 什么是值類型?值類型是一個值,當它分配給一個常量、變量或被作為參數傳遞時,它的值是被復制的。 ~~~ // 結構體測試 let hd = Resolution(width: 1920, height: 1080) var cinema = hd cinema.width = 2048 // 改變cinema的值,不會改變hd中的值 print("cinema.width:\(cinema.width)") // 2048 print("hd.width:\(hd.width)") // 1920 ~~~ 從上面的例子中可以看出,當你改變cinema的width值,不會引起hd中width的變化。 下面再用枚舉舉例: ~~~ // 枚舉測試 enum CompassPoint { case North, South, East, West } var currentDirection = CompassPoint.West let rememberedDirection = currentDirection // 改變currentDirection,rememberedDirection的值不會變化 currentDirection = .East print("\(rememberedDirection)") // West ~~~ ## 類是引用對象 相當于值對象,引用對象在傳遞過程中是不會復制的,它們指向同一個實例。 ~~~ let tenEighty = VideoMode() tenEighty.frameRate = 25.0 // 引用tenEighty到alsoTenEighty,并改變alsoTenEighty中的值 let alsoTenEighty = tenEighty alsoTenEighty.frameRate = 30.0 print("tenEighty.frameRate:\(tenEighty.frameRate)") // 30 ~~~ 在這里修改alsoTenEighty的frameRate會發現tenEighty的frameRate值也發生變化。 ## 恒等算子 因為類是引用類型,它可能被多個常量或變量指向。我們需要一種機制判斷這些常量或變量是否指向同一個實例。這里就需要用到恒等算子。 在swift中恒等算子有兩種操作符: - ===:相同實例 - !==:不同實例 使用這些操作符來比較兩個常量或變量是否引用同一個實例: ~~~ // 恒等算子是===或!== let tenEighty = VideoMode() let alsoTenEighty = tenEighty if tenEighty === alsoTenEighty { print("相同實例") } ~~~ ## 其他 ### 參考資料 [The Swift Programming Language (Swift 2.1)](https://developer.apple.com/library/ios/documentation/Swift/Conceptual/Swift_Programming_Language/ErrorHandling.html) ### 文檔修改記錄 | 時間 | 描述 | |-----|-----| | 2015-10-28 | 根據 [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>

                              哎呀哎呀视频在线观看