Swift儲存屬性

來源:互聯網
上載者:User

標籤:swift儲存屬性

        類是由屬性和方法組成,屬性一般是訪問資料成員,在Object-C中,屬性是為了訪問封裝後的資料成員而設計,屬性本身不儲存資料,資料是由資料成員儲存的,而Swift中的屬性分為儲存屬性和計算屬性,儲存屬性就是Object-C中的資料成員,計算屬性不儲存資料,但可以通過計算其他屬性傳回值


        儲存屬性可以儲存資料,分為常量屬性和變數屬性


        儲存屬性適用於類和結構體兩種物件導向結構類型,枚舉屬性沒有儲存屬性


1、儲存屬性概念

class Employee{        let no:Int = 0    var name:String = ""    var job:String?    var salary:Double = 0    var dept:Department?    }struct Department {        let no:Int = 0    var name:String = ""    }
var emp = Employee()emp.no = 100 //編譯錯誤 -----(1)let Dept = Department()Dept.name = "sales" //編譯錯誤  --- (2)let emp1 = Employee()emp1.name = "sales"  - ------(3)

        代碼第一行修改常量屬性,程式會發生編譯錯誤,第二行代碼也會發生錯誤,因為執行個體dept本身是常量,即便它的屬性name是變數,也不能修改,第三行代碼可以編譯通過,那是因為emp1是類執行個體,是參考型別,depet是結構體執行個體,是實值型別。參考型別相當於指標,其變數也可以修改,但實值型別的變也是不可修改的


2、延遲儲存屬性


        程式不關心他隸屬於哪個部門,只關心它的NO和name屬性,雖然不使用dept執行個體,但是仍然會佔用記憶體。在java中,有一種資料持久化的技術叫hibernate,hibernate有一種延時載入技術,swift也佔用了延時載入基數,樣本如下:


class Employee{        let no:Int = 0    var name:String = ""    var job:String?    var salary:Double = 0    lazy var dept:Department? = Department()    }struct Department {        let no:Int = 0    var name:String = ""    }

         在dept屬性前面加上lazy關鍵字,這樣dept的屬性就是消極式載入,顧名思義,就是dept屬性只有在第一次訪問它的時候才載入,如果永遠不訪問,它就不會建立,這樣就可以減少記憶體佔用

本文出自 “平凡之路” 部落格,請務必保留此出處http://linjohn.blog.51cto.com/1026193/1621819

Swift儲存屬性

相關文章

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.