Swift 实践:属性
Posted iOS程序员
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Swift 实践:属性相关的知识,希望对你有一定的参考价值。
存储属性、计算属性
存储属性:会存储常量或变量作为实例的一部分,只能由类和结构体定义。存储在实例的内存中。
计算属性:会计算值(而非存储),可以由类、结构体和枚举定义。本质就是方法、不占用实例的内存
lazy 属性
类似我们在 OC 里经常写的懒加载。有以下两点需要注意:
lazy只能修饰var变量;必须有一个初始化的值
必须有一个初始化的值
struct TestStuct {
lazy var para1 = [String]()
var para2: Int = 0
}
class Test {
lazy var label : UILabel = {
let l = UILable()
return l
}()
}
属性观察者
var totalSteps: Int = 0 {
willSet(newTotalSteps) { //
print("About to set totalSteps to \(newTotalSteps)")
}
didSet { // 会在一个新值被存储后被调用。
if totalSteps > oldValue {
print("Added \(totalSteps - oldValue) steps")
}
}
}
只读属性
var pagetype: ChatPageType = .wenzhen
var isWz: Bool { // 只读属性
get {
if self.pagetype == .wenzhen {
return true
} else {
return false
}
}
}
类型属性
类型属性只能通过类型访问。
存储类型属性:整个程序运行过程中,只有1分内存(类似全局变量)
计算类型属性
struct Car {
static var count: Int = 0 // 结构体使用static定义类型属性,类使用class
init() {
Car.count += 1
}
}
以上是关于Swift 实践:属性的主要内容,如果未能解决你的问题,请参考以下文章
如何将这个 Objective-C 代码片段写入 Swift?