Swift指针的替代品?

时间:2015-06-07 19:24:09

标签: ios swift pointers sprite-kit

我使用SpriteKit制作游戏。当两个特定类型的精灵碰撞时,我想记下其中一个精灵,然后在游戏中稍后更新该精灵。

使用指针,我基本上会做以下事情。当两个对象发生碰撞时,我会设置一些全局指针,指向我想要跟踪的精灵的地址。然后,当调用修改函数时,它将修改在该地址指向的任何内容,实质上修改碰撞的精灵。

我宁愿不使用指针,因为Swift不鼓励直接访问内存。我不能通过引用修改函数来传递精灵,因为我的代码不会调用修改函数(didSimulatePhysics)。

谢谢!

1 个答案:

答案 0 :(得分:2)

您可以使用.unshare().copy()

var valueA = [1,2,3,4]
var valueB = valueA

现在,如果您更改valueA,则valueB也将更改:

valueA[1] = 4 // valueA and valueB are now equal to [1,4,3,4]

但是如果我们使用.unshare()方法:

valueB.unshare()

然后valueB不共享,所以如果我们改变valueA,valueB将不会改变:

valueA[1] = 2 \\ valueA == [1,2,3,4] && valueB == [1,4,3,4]

或者您可以使用.copy()方法:

var valueC = valueA.copy()

它与:

相同
var valueC = valueA
valueC.unshare()
相关问题