当前位置: 首页 > 面试题库 >

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

王渊
2023-03-14
问题内容

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

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

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

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


问题答案:

您的假设很接近,但是有些事情可以更改。我将尽力帮助您尽可能接近Objective-C版本。

首先,nonatomicassign无关紧要。那让我们

@property (getter = isOpen) BOOL open;

由于swift中的属性只是实例变量,因此swift转换如下。

var open:Bool

尽管它具有与Objective-
C版本相同的基本功能,但缺少命名的getter(isOpen)。不幸的是,目前尚无直接翻译可迅速解决。您可以使用自定义的getter和setter。

var open:Bool {
    get {
        // custom getter
    }
    set {
        // custom setter
    }
}

一个相当粗略的解决方法是制作 一个 字面上称为“ isOpengetter”的函数

func isOpen() -> Bool { return self.open }

总而言之,您所要求的只是一点点可能,但是希望在以后的swift版本中可以成为现实。



 类似资料:
  • 问题内容: 我已经搜索过Swift书,但是找不到@synchronized的Swift版本。如何在Swift中进行互斥? 问题答案: 您可以使用GCD。它比更加冗长,但可以代替:

  • 问题内容: 下面的Objective-C代码等效于Swift代码。我找不到带有运行时概念的快速主题。 试图获取类的对象? 更新: 尝试以下代码,出现错误 问题答案: 首先,在不知道您在Objective-C中使用该类对象的目的的情况下,很难将该代码转换为Swift。 在Objective-C中,类对象是对象,并且类型可以保存指向任何类对象的指针。但是,当将Objective-C API桥接到Swi

  • 问题内容: 用Java 最接近Objective-C的实现是什么?对我来说,看起来像,但是我对Objective-C还是很陌生。 谢谢 问题答案: 是一个类集群(请参阅《可可基础指南》中的“类集群”部分),这意味着实际的实现对您(API用户)是隐藏的。实际上,Foundation框架将在运行时根据数据量等选择适当的实现。此外,可以将任何一个作为键,而不仅是(当然,键对象的键必须是常量)。 因此,最

  • 我领导的应用程序有一个相当大的代码库(70.000行),所以一次过渡它是不可能的。

  • 问题内容: 我想知道它们是否在JAVA的方法“ BeanUtils.CopyProperties(bean1,Bean2);”的目标C中具有等效项。? 或其他解决方案,我想将motherObject强制转换为childObject: 在第一个测试中,它可以正常工作,但是我有一个警告:“不兼容的指针类型返回…”; 我使用WSDL2Objc并生成Bean,并且其名称可以在2代之间更改:-/ 我更喜欢与

  • 问题内容: 在Swift中,转义的闭包参数用注释。在Objective- C中是否有任何等效项,以便将生成的Swift接口标记为? 问题答案: 是的,但是从您在问题中提出的建议来看是落后的。规则是,除非明确标记,否则Objective-C不可为空的块会 自动 转换为Swift作为函数。 __