sceneDidLoad被调用两次?

时间:2016-09-20 09:34:48

标签: swift xcode sprite-kit ios10

使用Xcode 8,swift 3和我使用启用了实体的游戏模板创建iOS应用程序。我注意到我看到一些初始精灵的双节点数,即使我只使用过addChild一次。

我添加了

override func sceneDidLoad() {
print(#function) ... } 

代码,不知道为什么会被调用两次。

日志文件......

2016-09-20 10:21:31.482 MMDecon1[3295:791435] SKUtil.m: MGGetBoolAnswer is not available in the simulator.
sceneDidLoad()
sceneDidLoad()

我添加了

override func didMove(to view: SKView) {..} 

并将我的初始化代码放在此处作为临时修复。

是否有人知道为什么使用实体使用默认游戏应用代码触发sceneDidLoad()两次?

1 个答案:

答案 0 :(得分:1)

通常,sceneDidLoad只被调用一次。但是,如果发送了内存警告,则UIViewController会释放其场景,并在视图控制器不可见时将其设置为nil。下次出现场景时,视图控制器将重新加载场景并再次调用sceneDidLoad。

您必须假设可以多次调用sceneDidLoad。

实施didReceiveMemoryWarning并记录或设置断点以查看发生的情况。