Swift 4可变对象的可变集合?

时间:2018-01-10 07:14:46

标签: ios arrays swift collections sprite-kit

我想创建一个精灵池,我可以在屏幕上移动而无需重新初始化并将它们一遍又一遍地添加到我的场景中。

为此,我希望以一种我可以轻松访问和改变对象的方式存储对象集合。

我最初的想法是使用一个数组,但是当我引用数组时,Swift会传回一个对象的副本。

var nodes:[SKNodes] = SKNodes();
nodes.append(SKNode());

nodes[0].position = CGPoint(x: 100, y: 100) //doesn't work

创建这样的东西的最佳做法是什么?

修改

由于打字错误,我没有工作,愚蠢的我。出于某种原因,我认为它不起作用,因为Swift会按值传递,我会得到数组中对象的副本而不是对象的引用。

我现在已经知道Swift将对象和函数作为参考类型传递,基本上只有结构和枚举按值传递

Is Swift Pass By Value or Pass By Reference

var nodes:[SKNode] = SKNodes();
nodes.append(SKNode());

nodes[0].position = CGPoint(x: 100, y: 100) //Works!

1 个答案:

答案 0 :(得分:2)

由于您将setGeneric(name = "mwe_fun" , def = function(arg1) standardGeneric( "mwe_fun" ) ) setMethod( f = "mwe_fun" ,signature = c("list"), function(arg1){ if( all(lapply(a, typeof) == "double")) return("I am a numeric list") if( all(lapply(a, typeof) == "character")) return("I am a character list") }) 附加到SKNode,因此应该Array而不是[SKNode]

[SKNodes]