點擊查看源碼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 */ }