在Swift中,以下Objective-C代码等效于什么?
@property (nonatomic, assign, getter = isOpen) BOOL open;
具体来说,如何在Swift中声明一个变量以使用自定义名称来合成getter?
此外,您随后如何覆盖getter和setter的实现?
您的假设很接近,但是有些事情可以更改。我将尽力帮助您尽可能接近Objective-C版本。
首先,nonatomic和assign无关紧要。那让我们
nonatomic
assign
@property (getter = isOpen) BOOL open;
由于swift中的属性只是实例变量,因此swift转换如下。
var open:Bool
尽管它具有与Objective- C版本相同的基本功能,但缺少命名的getter(isOpen)。不幸的是,目前尚无直接翻译可迅速解决。您可以使用自定义的getter和setter。
isOpen
var open:Bool { get { // custom getter } set { // custom setter } }
一个相当粗略的解决方法是制作 一个 字面上称为“ isOpengetter”的函数。
func isOpen() -> Bool { return self.open }
总而言之,您所要求的只是一点点可能,但是希望在以后的swift版本中可以成为现实。