我是Swift和iOS的新手,我试图弄清楚设置和获取值的推荐方法是什么。我注意到,与Android(我来自哪里)相比,在类的构建中有很多直接访问。那么iOS老手做什么以及为什么呢?是否有某种推荐方法?
答案 0 :(得分:2)
什么看起来像一个任务实际上是一个setter,看起来像读一个成员实际上是一个吸气剂。该类通常有一个原始的setter,它只能分配或读取值,但可以用你想要的任何代码覆盖它。此外,还有didSet / willSet,类可以添加代码来响应更改。
您永远不会编写看起来的代码,就像您正在调用setter或getter一样,但实际上是在调用它们。
如果您在调用getter或setter时发现执行了大量代码,这对调用者来说是意外的,那么您可以使用函数。
答案 1 :(得分:2)
尽管语法完全相同,但访问Swift属性与访问Java变量不同,当您在Java中公开变量时,就像这样
class MyClass {
public int val = 123;
}
你无法在以后的某个时间保护它而不会破坏其他人的读写c.val
变量的代码。
Swift属性允许您将自定义getter和setter添加到开头看起来像变量的内容:
class MyClass {
public var val = 123
}
如果您以后决定要设置设置器,可以将其更改为
class MyClass {
private var _val = 123
public var val : Int {
get {
return _val
}
set (newVal) {
precondition(newVal >= 0, "Negative values are not allowed")
_val = newVal
}
}
}
这是因为当您编写c.val = -321
时,Swift执行setter的代码,即看起来像直接访问的实际上是方法调用。