代码之家  ›  专栏  ›  技术社区  ›  Greg Maletic

swift:数组引用作为对象属性?

  •  0
  • Greg Maletic  · 技术社区  · 6 年前

    我有一个 UITableViewController 它可以显示来自三个不同数组中任意一个的内容。在objective-c中,我通常要做的是在 TableVC 这是对要显示的数组的引用。然后 表格VC 不仅可以显示该数组的内容,还可以处理用户对数组的编辑,例如,如果他们删除或重新排序元素。

    当我在我的房子里 表格VC 对数组来说是 复制 我的模型数组,而不是引用。虽然这在某些情况下是很好的,但在我的应用程序中,这似乎是不好的,原因有二:1)我的数组很大,有成千上万个元素,一遍又一遍地复制巨大的数组似乎是浪费;2)小的编辑更难处理:我必须就元素删除或重新排序与模型进行通信,并确保我的视图和模型数组保持同步。

    设置一个引用数组的属性 希望 去做,但是没有 inout swift中的对象属性。

    对我来说,正确的处理方法是什么?

    谢谢。

    1 回复  |  直到 6 年前
        1
  •  1
  •   Charles Srstka    6 年前

    斯威夫特 Array s并不是每次分配时都被复制;相反,它们是 书面复制 是的。这意味着数组只有在发生变异时才会被复制;在这之前,你只复制一个引用,就像objective-c一样。

    也就是说,如果需要引用语义, NSArray objective-c的类在swift中仍然可用。你也可以创建自己的 class 包装的类型 阵列 如果您不喜欢使用objective-c桥。