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

时间:2018-07-08 22:17:17

标签: arrays swift

我有一个UITableViewController,可以显示来自三个不同数组中任何一个的内容。在Objective-C中,我通常要做的是在TableVC上设置一个属性,该属性是对要显示的数组的引用。这样TableVC不仅可以显示该数组的内容,而且还可以处理用户控制的数组编辑(例如,如果它们已删除或重新排序了)。

当我在TableVC上将属性设置为数组时,在Swift中工作的方式似乎是它是模型数组的副本,而不是引用。尽管在某些情况下这很好,但在我的应用程序中看起来却很糟糕,原因有两个:1)我的数组很大,有数千个元素,一遍又一遍地复制巨大的数组似乎很浪费; 2)小修改很难处理:我必须向模型传达有关元素删除或重新排序的信息,并确保我的视图和模型数组保持同步。

想要要做的是设置引用数组的属性,但是在Swift中没有inout对象属性。

我处理此问题的正确方法是什么?

谢谢。

1 个答案:

答案 0 :(得分:1)

每次分配Array时,实际上并不会复制它们。而是写时复制。这意味着该数组仅在某些东西发生突变时才被复制;在那之前,您只能复制一个引用,例如使用Objective-C。

话虽如此,如果您需要引用语义,那么Objective-C的NSArray类仍然可以在Swift中使用。如果您不想使用Objective-C桥接器,也可以创建自己的class类型来包装Array