我已经写了我的类MyClass,我已经实现了copyWithZone来复制它
但是,我的swift数组包含我的MyClass对象,如:
var array = [MyClass]()
当我想制作那个阵列的副本时
var anotherArray = array
它仍然不调用MyClassObject.copyWithZone,稍后如果我更改数组中的object属性,anotherArray也会反映更改.
如何在不编写for循环来迭代每个对象的情况下复制它?
它不像deep copy for array of objects in swift那样重复,因为我不能使用struct来重写我的类.
解决方法 作为一个简单的声明,您可以使用如下代码:var copIEdArray = array.map{.copy()}
请注意,术语“deepcopy”对于您所谈论的内容有点误导.如果数组是异构的并且包含其他容器(如数组,字典,集合以及其他自定义容器和“叶子”对象),该怎么办?你应该做的是创建一个Deepcopiable协议,并要求任何符合Deepcopiable的对象要求任何子对象也符合Deepcopiable协议,并编写deepcopy()方法以递归方式调用所有对象的deepcopy()儿童对象.这样你最终可以使用任意深度的深拷贝.
总结以上是内存溢出为你收集整理的ios – 如何制作快速的类对象数组的深层副本全部内容,希望文章能够帮你解决ios – 如何制作快速的类对象数组的深层副本所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)