以下 Swift 中的 Objective-C 代码等效于什么?
@property (nonatomic, assign, getter = isOpen) BOOL open;
具体来说,如何在 Swift 中声明一个变量来合成具有自定义名称的 getter?
此外,您随后如何覆盖 getter 和 setter 的实现?
最佳答案
您的假设很接近,但有几处可以更改。我会尽力帮助您尽可能接近 Objective-C 版本。
首先,nonatomic
和assign
在swift 中是不相关的。这给我们留下了
@property (getter = isOpen) BOOL open;
由于 swift 中的属性只是实例变量,因此 swift 翻译如下。
var open:Bool
虽然它具有与 Objective-C 版本相同的基本功能,但它缺少命名的 getter (isOpen
)。不幸的是,目前还没有直接翻译成 swift。您可以使用自定义的 getter 和 setter。
var open:Bool {
get {
// custom getter
}
set {
// custom setter
}
}
一个相当粗略的解决方法是制作另一个函数,字面上称为isOpen
,它将充当 setter/getter 。
func isOpen() -> Bool { return self.open }
总之,您所要求的可能性很小,但希望在以后的 swift 版本中能够成为现实。
关于objective-c - 在 Swift 中创建等效的 Objective-C Getter 和 Setter,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28828549/