【问题标题】:SKScene is not deallocating in xcodeSKScene 未在 xcode 中解除分配
【发布时间】:2014-04-24 22:32:29
【问题描述】:

我有一个 SKScene,它在游戏过程中的任何时候都没有被释放......我已经取消了场景,将它从其父视图中删除,并且 dealloc 方法仍然永远不会被命中。场景也设置为弱(尽管在 iPhone 5s 上,如果设置为弱,它会立即取消分配场景)。最终,由于后台运行的场景内存不足,游戏崩溃了。

【问题讨论】:

  • 所以你已经完成了[spriteView presentScene:nil];?能否请您发布一些代码。
  • 您很可能有一个保留周期。运行分析构建和仪器以找到它。如果您将自定义节点子类添加到场景中,并且该子类对场景具有强引用,则保留循环的常见情况。节点保留场景,场景保留节点。同样,如果场景的两个子节点彼此具有强引用。
  • 谢谢你们。原来我有一些本应很弱的强引用....
  • 我也遇到了同样的问题——这些强引用在哪里?在 .h 中是非 ..
  • 我的主要是作为属性的 UIView。其中一些在 .m 中,一些在 .h 中。不过老实说,这一切都取决于您拥有的 @property 值。

标签: memory-management sprite-kit skscene


【解决方案1】:

事实证明,我有一些属性在它们应该是弱引用时却具有强引用。这导致场景被保留,因为其中的属性没有释放......

【讨论】:

  • 我可能会补充一点,如果您是块的重度用户,请确保您将那些持有强引用 self 的块归零 - 即在块内引用 ivars 时。
  • 如何创建弱引用以及在哪里添加这些引用,因为我遇到了同样的问题?谢谢
猜你喜欢
  • 2014-03-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-05-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多