objective-c - SKAction.runAction() 完成 block (闭包)的内存泄漏

标签 objective-c swift sprite-kit

我经常将 SKAction 与完成 block 一起使用,并在完成 block 中使用调用 runAction() 的变量,就像这样。

self.runAction(SKAction.waitForDuration(2.0)) {
    self.removeFromParent()
}

这会导致保留循环吗? 我认为,如果 SKNode 没有完成变量,则不会发生保留循环。 这是正确的吗?

最佳答案

我的测试结果,SKAction 完成闭包没有强引用。 此外,如果我将闭包作为变量添加到 SKNode 的子类并在闭包中访问 self,则 SKNode 的 deinit() 从未调用过。

关于objective-c - SKAction.runAction() 完成 block (闭包)的内存泄漏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31318556/

相关文章:

ios - 如何更改 UISegmentedcontrol 标题的字体大小?

ios - 让 Firebase Cloud 消息传递快速运行

ios - 我试图在退出应用程序时暂停 Sprite Kit 游戏

ios - Objective-C 从数组创建字典

objective-c - 我们可以将 NSString 与 NSMutableString 进行比较吗

ios - 从 Xcode iOS 项目运行 swift 脚本作为构建阶段

swift - 改变非透明 SKSpriteNode 的颜色(Swift)

iphone - iPhone 上使用 obj-c 时,自动释放所有内容而不是释放有什么坏处吗?

java - 范围字符串和 NSMakeRange : from Objective-C to Java

ios - 使用 SKSPriteNode 作为背景图像时 FPS 较低