gpt4 book ai didi

ios - Swift 中指针的替代品?

转载 作者:可可西里 更新时间:2023-11-01 01:40:02 25 4
gpt4 key购买 nike

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

使用指针,我基本上会执行以下操作。当两个对象发生碰撞时,我会设置一些全局指针指向我想要跟踪的 Sprite 的地址。然后,当修改函数被调用时,它会修改指向该地址的任何内容,实质上是修改发生碰撞的 Sprite 。

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

谢谢!

最佳答案

你可以像这样使用 .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()

关于ios - Swift 中指针的替代品?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30697555/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com