Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c addChild方法是同步还是异步完成的?_Objective C_Asynchronous_Sprite Kit_Sknode - Fatal编程技术网

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

Objective c addChild方法是同步还是异步完成的?,objective-c,asynchronous,sprite-kit,sknode,Objective C,Asynchronous,Sprite Kit,Sknode,我有一个SpriteKit游戏,我在SKScene的更新方法中检查我的sknodes是否有父节点(通过检查它们的父属性是否为nil)。如果它们没有父节点,那么我知道如何将它们添加到场景中 我担心的是,如果addChild方法是异步完成的,那么SKScene可能会在一个特定的更新帧上开始addChild方法,但在下一个更新帧之前可能无法使用该方法完成。因此,当它在下一个更新帧上检查同一节点的父属性时,它仍然为零,因此SKScene将再次尝试添加同一节点 如果发生这种情况,程序可能会失败,因为将同一

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

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

如果发生这种情况,程序可能会失败,因为将同一节点添加到场景两次会导致错误

当然,若addChild是同步完成的,那个么我就不必担心这会发生


那么有人知道addChild是同步还是异步完成的吗?或者我只是想得太远了,没什么好担心的吗?

不,方法是同步的,唯一看起来“异步”的是绘图。由于绘图只发生在“运行循环迭代之间”,addChild的可见效果可以被视为“延迟”

来回答您的问题:据我所知,同步。是的。您也可以自己轻松验证,添加一个子项并立即检查children.count