【发布时间】:2015-06-07 19:24:09
【问题描述】:
我正在使用 SpriteKit 制作游戏。当特定类型的两个精灵发生碰撞时,我想记下其中一个精灵,然后在游戏后期更新该精灵。
使用指针,我基本上会做以下事情。当两个对象发生碰撞时,我会设置一些全局指针,指向我想要跟踪的精灵的地址。稍后,当调用修改函数时,它会修改指向该地址的任何内容,本质上是修改碰撞的精灵。
我宁愿不使用指针,因为 Swift 不鼓励直接访问内存。我不能通过引用修改函数来传递精灵,因为我的代码没有调用修改函数 (didSimulatePhysics)。
谢谢!
【问题讨论】:
-
“我不能通过引用修改函数来传递精灵,因为我的代码没有调用修改函数 (didSimulatePhysics)”——这似乎与您有指向您的指针的事实正交无论如何都是对象(Objective-C 互操作 需要)。所以只需声明一个适当类型的变量——它实际上是一个指针。另外,请尝试在没有全局变量的情况下执行此操作。如果您认为全局变量可以解决您的问题,那么总会有更好的方法来解决它。
-
@TheParamagneticCroissant 对不起,我有点困惑。你是什么意思我有指向我的对象的指针?我没有任何“UnsafePointers”——这不是 Swift 所说的指针吗? “声明适当类型的变量将是引擎盖下的指针”是什么意思?所有对象实际上都是指针吗?抱歉,我没有使用 Objective-C 的经验,所以我有点困惑。
-
是的,所有 Objective-C 对象都是指针。 “不安全”指针不是唯一的指针类型。
-
SpriteKit 的主要接口是 Objective-C。它是用 Objective-C 编写的(也许也是用 C++ 编写的)。
-
你调用它的“copy”方法。
标签: ios swift pointers sprite-kit