本文共 911 字,大约阅读时间需要 3 分钟。
存储型属性:用于存储一个常量或者变量
class Person1 { var name: String = "lili" let age: Int = 10 lazy var p1:Person1 = Person1() }
// 用lazy 修饰的,是延迟加载,必须用 var 修饰
// 用 var 修饰的 name,可以在外界改变值,而用let 修 // 饰的属性age,外面不可以改变其值**简单来说,存储型属性主要就是用来存储值的
计算型属性: 计算性属性不直接存储值,而是用 get / set 来取值 和 赋值,可以操作其他属性的变化.
// get 用来取值
// set 用来赋值class Person2{ var weight: Int = 10 var height: Int = 5 // age 实现了get 和set 方法,可以在外面给这个属性赋值. var age: Int { get { return height * 3 } set(newValue){ // 或者直接用 newAge height = newValue * 5 } }//如果不实现set 方法,是不能给其赋值的,这种类型的属于只读计算属性.只读计算属性是可以省略get 的,直接返回即可.如 size 属性 var size: Int{ return height * 3 }//MARK: 计算属性死循环情况 /* 计算属性值是不固定的,不能用 let 修饰,只能用 var 计算型属性不能直接赋值 */// 下面的 get 和 set 方法都会导致死循环 var name: String{ get { return name // 这里会调用 get 方法 } set { name = newValue // 这里调用 set 方法 } }}
转载地址:http://ibwci.baihongyu.com/