Swift中的指针替代品?

用户4983985

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

使用指针,我基本上会执行以下操作。当两个对象发生碰撞时,我将设置一些全局指针,以指向要跟踪的精灵的地址。然后,稍后,当调用修改函数时,它将修改指向该地址的所有内容,从而实质上修改了碰撞的精灵。

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

谢谢!

扬·凯弗(Jan Kaifer)

您可以使用.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()

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章