Swift 中重写属性的set和get方法
- Swift中如何重写属性的set和get方法
- set和get方法的本质是什么
set和get方法紧跟着属性后面写,很紧凑,也清楚。
class Person: NSObject {
var _name: string?
var name: String? {
get {
return _name
}
set {
_name = newValue
}
}
}
这和OC中的声明一个带 _ 的变量,然后通过set、get方法给这个变量赋值同理。
为什么不直接返回name或者直接给name赋值呢,而是通过另外一个变量 _name 来存储真正的值呢?
如果这样
class Person: NSObject {
var name: String? {
get {
return self.name
}
set {
self.name = newValue
}
}
}
会陷入 self.name 的死循环的哦,所以不能这样写。
本质上 _name 这个变量存储真正的值,name 这个变量更多的作用相当于提供了一个方法,提供了其set和get方法,通过他的set和get方法给 _name 赋值。这一点和OC是一样一样的。