Swift学习笔记系列——(9)属性
Tags: Swift 学习笔记 发布时间:2015-07-17 Swift学习笔记系列——(9)属性属性关联数据到特定的类、结构体、或者枚举。 存储属性存储属性可以是常量,也可以是变量。 常量结构体实例的存储属性结构体实例被赋值给一个常量,即使该结构体的属性被声明为变量,也不能对其属性进行修改。 惰性存储属性用lazy关键字标记。 存储属性和实例变量OC中可以用属性和实例变量存储数据。 计算属性除了存储属性,类、结构体和枚举可以定义计算属性,计算属性并不存储值,而是提供了getter和可选的setter来间接地获取或设置其他属性或者值。 计算属性写法var center: Point { get { let centerX = origin.x + (size.width / 2) let centerY = origin.y + (size.height / 2) return Point(x: centerX,y: centerY) } set(newCenter) { origin.x = newCenter.x - (size.width / 2) origin.y = newCenter.y - (size.height / 2) } } 计算属性简写setter有默认参数newValue,可以省去不写 var center: Point { get { let centerX = origin.x + (size.width / 2) let centerY = origin.y + (size.height / 2) return Point(x: centerX,y: centerY) } set { origin.x = newValue.x - (size.width / 2) origin.y = newValue.y - (size.height / 2) } } 属性观察者属性观察者观察和响应一个属性的值的改变。 两种观察者可以随意选用willSet 在值被存储前调用; 观察者写法var totalSteps: Int = 0 { willSet(newTotalSteps) { print("About to set totalSteps to (newTotalSteps)") } didSet { if totalSteps > oldValue { print("Added (totalSteps - oldValue) steps") } } } 全局和本地变量全局变量是不定义在任何函数、方法、闭包或者类型中的变量。 类型属性类型属性在其他语言叫做静态属性。存储的类型属性可以是常量也可以是变量,但是必须给出初始值,因为类型属性没有机会初始化。 类型属性的语法可以用static关键字定义类型属性。对于类类型的计算属性,如果要允许子类复写超类实现,需要用class关键字将其定义为类型属性。 struct SomeStructure { static var storedTypeProperty = "Some value." static var computedTypeProperty: Int { return 1 } } enum SomeEnumeration { static var storedTypeProperty = "Some value." static var computedTypeProperty: Int { return 6 } } class SomeClass { static var storedTypeProperty = "Some value." static var computedTypeProperty: Int { return 27 } class var overrideableComputedTypeProperty: Int { return 107 } } 这里没有可读写的计算属性例子,以后要加上。 使用和设置类型属性用“类型名.属性名”访问和设置类型属性 本章思维导图(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |