数组 – 在swift中存储对数组的引用
发布时间:2020-12-14 05:39:54 所属栏目:百科 来源:网络整理
导读:我想将一个数组传递给一个对象并存储对该数组的引用.我希望能够在此对象中修改此数组,并确保在其他任何位置修改它. 这是我想要完成的(代码如何工作) class Foo { var foo : ArrayInt init(foo: ArrayInt) { self.foo = foo } func modify() { foo.append(5)
我想将一个数组传递给一个对象并存储对该数组的引用.我希望能够在此对象中修改此数组,并确保在其他任何位置修改它.
这是我想要完成的(代码如何工作) class Foo { var foo : Array<Int> init(foo: Array<Int>) { self.foo = foo } func modify() { foo.append(5) } } var a = [1,2,3,4] let bar = Foo(a) bar.modify() print(a) // My goal is that it will print 1,4,5 到目前为止我的发现 A)数组(默认情况下)以奇怪的方式传递.在修改数组长度之前,它是一个引用.一旦修改了长度,它就会被复制和修改.因此,如果我在对象中追加或删除任何内容,则不会在外面看到它 B)我可以在函数参数上使用inout.这将允许我在此功能中修改它.但是,只要我尝试将其分配给某个对象成员,我再次被A)击中 C)我可以在一些Container类中包装一个数组.这可能是最干净的方式.但是,我序列化/反序列化这些对象,我宁愿不把它放在Container中(因为我将不得不解决一些事情,用于序列化和反序列化并将其发送到服务器). 还有别的吗?我错过了一些允许我这样做的Swift构造吗?
你必须使用NSArray或NSMutableArray,因为Swift Arrays是值类型,所以任何赋值都会复制.
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |