tvOS Swift SKScene dealloc很有气质

时间:2015-11-07 14:58:43

标签: swift sprite-kit skscene tvos apple-tv

所以我有一个主菜单UIViewController,然后呈现一个新的UIViewController,其中包含一个包含SKScene的SKView。我没有设置内部的代码,除了使层次结构工作的基本要素。

问题在于,当SKScene视图委托其UIViewController自身调用self.dismissViewControllerAnimated(true, completion: {})时,有时会发生UIViewController解除分配,然后SKScene解除分配的预期行为(我通过记录deinit来检查这一点)每种方法)。但只有一半的时间只有UIViewController才能解除分配,让SKScene仍然活着。跑步(虽然不可见)。当发生这种情况时,SKScene仍将运行直到您按下遥控器上的任何触摸或按钮,然后SKScene将停止运行&最后dealloc!

任何人都可以告诉我为什么会这样吗?有些东西随机地强烈引用了SKScene。这可能与焦点或触摸有关吗?!

更新:

我正在打电话,似乎与焦点或焦点引擎无关 setNeedsFocusUpdate()&菜单UIViewController出现后updateFocusIfNeeded()。焦点得到更新,但它无法解决问题。而且当触摸控制器以杀死SKScene时,甚至在菜单UIViewController中的deinit()方法之前发生SKScene override func touchesBegan()

1 个答案:

答案 0 :(得分:1)

很难弄清楚为什么在没有实际代码的情况下保持对对象的引用,但是我发现通常的罪魁祸首是在异步块内引用的对象或未声明为{{{}的委托。 1}}。如果你正在使用Xcode 8,那么使用Xcode 8中引入的内存图来调试它会更容易。

enter image description here