gpt4 book ai didi

ios - runblock 保留自引用导致内存释放问题

转载 作者:搜寻专家 更新时间:2023-10-31 22:03:33 25 4
gpt4 key购买 nike

这是我的代码:

ship.runAction(SKAction.waitForDuration(5), completion: {
self.ship.flyStraight()//retain self
})

经过几天谷歌搜索内存问题,最后我发现我在这个 block 中有一个 self 保留。当我在 block 运行之前创建新场景时,不会调用 deinit 函数,因为 block 中的引用。

我必须在我的游戏中这样写,我该怎么做才能避免这个问题。你用这样的代码做了什么?

最佳答案

对于遇到同样问题的任何人。我将代码更改为:

ship.runAction(SKAction.waitForDuration(5), completion: {
[unowned self] in
self.ship.flyStraight()
})

在您的 block 中使用[unowned self] in 不会添加对 self 的强引用。

感谢 Martin 的链接: "Resolving Strong Reference Cycles for Closures"

你也可以看看this question

关于ios - runblock 保留自引用导致内存释放问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28139226/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com