我有一个UITableViewController
,可以显示来自三个不同数组中任何一个的内容。在Objective-C中,我通常要做的是在TableVC
上设置一个属性,该属性是对要显示的数组的引用。这样TableVC
不仅可以显示该数组的内容,而且还可以处理用户控制的数组编辑(例如,如果它们已删除或重新排序了)。
当我在TableVC
上将属性设置为数组时,在Swift中工作的方式似乎是它是模型数组的副本,而不是引用。尽管在某些情况下这很好,但在我的应用程序中看起来却很糟糕,原因有两个:1)我的数组很大,有数千个元素,一遍又一遍地复制巨大的数组似乎很浪费; 2)小修改很难处理:我必须向模型传达有关元素删除或重新排序的信息,并确保我的视图和模型数组保持同步。
我想要要做的是设置引用数组的属性,但是在Swift中没有inout
对象属性。
我处理此问题的正确方法是什么?
谢谢。
答案 0 :(得分:1)
每次分配Array
时,实际上并不会复制它们。而是写时复制。这意味着该数组仅在某些东西发生突变时才被复制;在那之前,您只能复制一个引用,例如使用Objective-C。
话虽如此,如果您需要引用语义,那么Objective-C的NSArray
类仍然可以在Swift中使用。如果您不想使用Objective-C桥接器,也可以创建自己的class
类型来包装Array
。