Swift_屬性

Swift_屬性


點擊查看源碼git

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."
}

//屬性
class Properties: NSObject {
    
    func test() {
        self.testProperties()
    }
    
    func testProperties() {
        let user = Users()
        
        //有初始值
        print("\(user.id)")
        
        //無初始值
        print("\(user.name)")
        
        //懶加載 只有使用的時候纔會加載
        print("\(user.importer.fileName)") //先輸出"初始化" 後輸出"data.txt"
        
        //get和set
        user.qq = "1045214799"
        print("\(user.qq)")
        
        //只讀
        //   user.height = 150 //報錯
        print("\(user.height)")
        
        //屬性觀察 willSet將設置 didSet已設置
        user.address = "北京"   //新地址:北京  舊地址:
        user.address = "天安門" //新地址:天安門 舊地址:北京
        
        //靜態變量
        Users.storedTypeProperty = "static"
        print("\(Users.storedTypeProperty)")
    }
    /*  print
     
     0
     nil
     初始化
     data.txt
     傳入值:1045214799
     得到
     1045214799
     180
     新地址:北京
     舊地址:
     新地址:天安門
     舊地址:北京
     static
     
     */
}
相關文章
相關標籤/搜索