Alf*_*red 2 ios retain-cycle sprite-kit skaction swift
这是我的代码:
ship.runAction(SKAction.waitForDuration(5), completion: {
self.ship.flyStraight()//retain self
})
Run Code Online (Sandbox Code Playgroud)
几天后谷歌搜索内存问题,最后我发现我有一个自我保留在这个块.当我在块运行之前创建新场景时,将不会调用deinit函数,因为块中的引用.
我必须在游戏中以这种方式写作,我该怎么做才能避免这个问题.你用这样的代码做了什么?
对于那些遇到同样问题的人.我将代码更改为:
ship.runAction(SKAction.waitForDuration(5), completion: {
[unowned self] in
self.ship.flyStraight()
})
Run Code Online (Sandbox Code Playgroud)
[unowned self] in在您的块中使用不会添加对self的强引用.
感谢Martin的链接:"为解决方案解决强大的参考周期"
你也可以看看这个问题
| 归档时间: |
|
| 查看次数: |
465 次 |
| 最近记录: |