runblock 保留自引用导致内存释放问题
runblock retain self reference cause memory dealloc issue
这是我的代码:
ship.runAction(SKAction.waitForDuration(5), completion: {
self.ship.flyStraight()//retain self
})
经过几天谷歌搜索内存问题,最后我发现我在这个块中有一个自我保留。当我在块有 运行 之前创建新场景时,不会调用 deinit 函数,因为块中的引用。
我的游戏必须这样写,我该怎么做才能避免这个问题。你用这样的代码做了什么?
对于遇到同样问题的任何人。
我将代码更改为:
ship.runAction(SKAction.waitForDuration(5), completion: {
[unowned self] in
self.ship.flyStraight()
})
在您的块中使用 [unowned self] in
不会添加对 self 的强引用。
感谢马丁的 link: "Resolving Strong Reference Cycles for Closures"
你也可以看看this question
这是我的代码:
ship.runAction(SKAction.waitForDuration(5), completion: {
self.ship.flyStraight()//retain self
})
经过几天谷歌搜索内存问题,最后我发现我在这个块中有一个自我保留。当我在块有 运行 之前创建新场景时,不会调用 deinit 函数,因为块中的引用。
我的游戏必须这样写,我该怎么做才能避免这个问题。你用这样的代码做了什么?
对于遇到同样问题的任何人。 我将代码更改为:
ship.runAction(SKAction.waitForDuration(5), completion: {
[unowned self] in
self.ship.flyStraight()
})
在您的块中使用 [unowned self] in
不会添加对 self 的强引用。
感谢马丁的 link: "Resolving Strong Reference Cycles for Closures"
你也可以看看this question