当前位置: 首页 > 知识库问答 >
问题:

用结构代替类快速[重复]

双恩
2023-03-14

我从一段时间开始学习雨燕,我知道结构和阶级之间的区别。主要区别是结构是值型,类是引用型,但不明白什么时候用结构代替类。请解释一下。

例如,在协议的情况下:

protocol SomeProtocol{
    func doSomeStuff()
}

其次,我们将类类型的协议如下所示:

protocol SomeProtocol: class{
    func doSomeStuff()
}

所以,请解释我,当我们必须使用结构类型或类类型的协议。

共有1个答案

翟越
2023-03-14

首先,结构按值传递(复制),类是通过引用传递的(只复制内存地址到对象)。您可能想对简单的类型使用结构,因为您可以为结构的所有属性获得免费的init。对于协议,第一个可以在class、struct和enum上使用它,第二个您说您只在类上使用它,如果您的协议是委托或数据源,您可能想将class放入,因为您希望(协议类型的)属性弱以避免内存周期。IMHO在多场景应用程序中使用类,因为当你在另一个场景中编辑东西时,你不需要注意更新值。

 类似资料:
  • 问题内容: 我想用这种方法在一个块内重新加载表数据: 但是else块将不会执行。我得到的错误是: 那么,快速替代的替代方案是什么? 更新: 我现在收到中止错误。 问题答案: 这个简单的C函数: 如何使用以下命令启动功能: 在viewDidLoad()中?

  • 问题内容: 苹果公司的书“结构和类之间最重要的区别之一是,结构在代码中传递时总是被复制,而类是通过引用传递的。” 谁能帮助我了解这意味着什么?在我看来,类和结构似乎是相同的。 问题答案: 这是带有的示例。请注意,更改名称后,如何更新两个变量引用的实例。现在,曾经被引用过的任何地方。 现在,使用a 可以看到复制了值,并且每个变量都保留了自己的一组值。当我们将名称设置为时,in 中的结构不会更改。 因

  • 问题内容: 通过从继承可以很容易地将Realm与类一起使用。但是我如何将包含几个字段的a保存到Swift中呢?例如 我知道文档中明确支持的类型。但是也许有一个不错的解决方法,或者甚至更好-来自领域的人可以写有关结构的未来计划。 问题答案: 我建议您使用协议,以实现所需的功能。 1)创建您的结构 2)创建您的领域对象 3)使用协议将我们的结构转换为Realm对象 4)使您的结构持久 有了这些工具,我

  • 1 谱聚类算法的原理   在分析快速迭代聚类之前,我们先来了解一下谱聚类算法。谱聚类算法是建立在谱图理论的基础上的算法,与传统的聚类算法相比,它能在任意形状的样本空间上聚类且能够收敛到全局最优解。 谱聚类算法的主要思想是将聚类问题转换为无向图的划分问题。 首先,数据点被看做一个图的顶点v,两数据的相似度看做图的边,边的集合由$E=A_{ij}$表示,由此构造样本数据集的相似度矩阵A,并求出拉普拉斯

  • 问题内容: 我正在尝试快速进行简单的DNS查找。到目前为止,这是我拥有的代码: 此时,“地址” NSArray中的每个元素都是一个CFDataRef对象,该对象包装了一个sockaddr结构。 由于CFDataRef可以免费连接到NSData,因此可以像这样循环遍历它们: 到目前为止,一切都很好(我认为)。当我在单元测试中运行时,这会打印出有效的外观数据。这是我被卡住的地方。为了我的一生,我不知道

  • 我想将PayPalExpress Checkout与OmniPay集成,但留档完全未完成。我如何运行方法,如setExpressCheckout,doExpressCheckout和getExpressCheckout?此外,如何将所有PayPal呼叫重定向到IPN监听器?OmniPay提供所有这些方法还是只是其中的一部分?有人有机会使用这个库与快速结账? 问候!