addChild方法是同步还是异步完成的?

时间:2015-02-21 05:45:00

标签: objective-c asynchronous sprite-kit sknode

我有一个SpriteKit游戏,我在SKScene的更新方法中检查我的sknodes是否有父节点(通过检查它们的父属性是否为nil)。如果他们没有父节点,那么我知道将它们添加到SKScene。

我担心如果addChild方法是异步完成的,那么SKScene可以在一个特定的更新帧上开始addChild方法,但是下一个更新帧可能无法使用该方法。因此,当它在下一个更新帧上检查同一节点的父属性时,它仍然是nil,因此SKScene将尝试再次添加相同的节点。

如果发生这种情况,程序可能会失败,因为向SKScene添加两次相同的节点会导致错误。

当然,如果addChild同步完成,那么我不必担心这种情况会发生。

那么有人知道addChild是同步还是异步完成的?或者我只是想到这个问题太过分了,这不是值得担心的事情吗?

1 个答案:

答案 0 :(得分:2)

没有方法是同步的唯一'异步看似'的事情,将是绘图。因为绘图只发生在“runloop迭代之间”,所以addChild的可见效果可以被视为“延迟”