【问题标题】:Swift 4 Mutable Collection of Mutable Objects?Swift 4 可变对象的可变集合?
【发布时间】:2018-01-10 07:14:45
【问题描述】:

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

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

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

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

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

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

编辑:

由于拼写错误,它无法正常工作,我很傻。出于某种原因,我认为它不起作用,因为 Swift 会按值传递,并且我会在数组中获取对象的副本,而不是对对象的引用。

我现在了解到 Swift 将 Objects 和 Functions 作为引用类型传递,并且基本上只有结构和枚举是按值传递的

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!

【问题讨论】:

  • 是不是忘记将数组中的节点添加到场景中?

标签: ios arrays swift collections sprite-kit


【解决方案1】:

由于您将SKNode 附加到Array,它应该是[SKNode] 而不是[SKNodes]

var nodes:[SKNode] = SKNodes();
nodes.append(SKNode());
nodes[0].position = CGPoint(x: 100, y: 100) //should work

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-30
    • 2011-01-14
    • 2017-02-13
    • 2018-01-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多