【发布时间】:2015-11-07 14:58:42
【问题描述】:
所以我有一个主菜单 UIViewController,然后显示一个新的 UIViewController,其中包含一个包含 SKScene 的 SKView。除了使层次结构正常工作的基本要素外,我在设置中没有任何代码。
问题在于,当 SKScene 视图委托其 UIViewController 对其自身调用 self.dismissViewControllerAnimated(true, completion: {}) 时,有时会发生 UIViewController 解除分配和 SKScene 解除分配的预期行为(我通过在每个中记录 deinit 方法来检查这一点) .但是有一半的时间只有 UIViewController 会解除分配,让 SKScene 仍然活着并运行(尽管不可见)。发生这种情况时,SKScene 仍将运行,直到您在遥控器上进行任何触摸或按钮按下,然后 SKScene 将停止运行并最终解除分配!
谁能告诉我为什么会发生这种情况?某些东西随机持有对 SKScene 的强烈参考。会不会和焦点或触摸有关?!
更新:
这似乎与我所说的焦点或焦点引擎无关
setNeedsFocusUpdate() & updateFocusIfNeeded() 在 UIViewController 菜单出现后。焦点得到更新,但它并没有解决问题。而且 SKScene deinit() 发生在菜单 UIViewController 中的 override func touchesBegan() 方法之前,甚至在触摸控制器以杀死 SKScene 时调用!
【问题讨论】:
标签: swift sprite-kit skscene tvos apple-tv