gpt4 book ai didi

properties - 未调用 Swift 中的访问器方法

转载 作者:搜寻专家 更新时间:2023-11-01 06:24:38 27 4
gpt4 key购买 nike

在 Objective-C 中,我可以对属性执行以下操作:

@property (nonatomic, strong) Person *currentPerson;

然后 intellisense 会显示我可以添加以下方法:

- (void)setCurrentPerson:(Person *)currentPerson {
...
}

设置该属性方法后,将调用该方法。

在 Swift 中是否有等效的方法来触发 setter 方法?我注意到没有智能感知,并且在 Swift 中添加相同的方法永远不会被调用。

func setCurrentPerson(currentPerson: Person) {} // never called

最佳答案

您可以通过使用嵌入到计算属性中的伪私有(private)属性来实现相同的结果,如下所示:

class Test {
var _data: String = ""

var data: String {
get { return self._data}
set { self._data = newValue }
}
}

_data 属性仍然可以公开访问(swift 中没有private/protected/private 访问修饰符yet) - 这就是为什么我在它前面加上下划线的原因,以提醒我这是一个伪私有(private)属性。

通过 data 计算属性,您可以使用 getter 和 setter 来覆盖标准行为。

此方法是模仿 objective-c 中的属性的变通方法。 willSetdidSet 属性观察器仍然可以按照@gotnull 在他的回答中概述的那样使用。

关于properties - 未调用 Swift 中的访问器方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24665754/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com