objective-c - 在 Swift 中创建等效的 Objective-C Getter 和 Setter

标签 objective-c swift

以下 Swift 中的 Objective-C 代码等效于什么?

@property (nonatomic, assign, getter = isOpen) BOOL open;

具体来说,如何在 Swift 中声明一个变量来合成具有自定义名称的 getter?

此外,您随后如何覆盖 getter 和 setter 的实现?

最佳答案

您的假设很接近,但有几处可以更改。我会尽力帮助您尽可能接近 Objective-C 版本。

首先,nonatomicassign 在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/

相关文章:

ios - 为什么我们没有 UIBarMetricsLandscapePad?

ios - 在 Swift 中寻找高度

ios - Swift tableview 在编辑一个单元格时更改随机单元格的值

ios - 无法将 UILabel 添加到 UICollectionViewCell

swift - Spritekit : Change a scene and keep the background

objective-c - 如何获取所有 mime 类型 Google Drive Api IOS

objective-c - 无法在 Swift 中调用 Objective-C 方法

ios - 无法接收变更通知、键值观察、KVO模型-IOS

ios - 如果没有以前购买的应用程序内产品可用,则显示警报

ios - 在 UIViewController 之间导航时遇到问题