弱变量什么时候变为零?
weak var backgroundNode = SKSpriteNode(texture: SKTexture(image: initialBackgroundImage!))
backgroundNode!.position = CGPoint(x: rootSkScene!.frame.midX, y: rootSkScene!.frame.midY)
总是得到:
致命错误:在解包可选值时意外发现 nil
Xcode 错误 https://i.stack.imgur.com/m1ySH.png
局部变量几乎应该总是强的。这样,如果您创建一个对象并将其保存到局部变量,则局部变量提供的强引用将使该对象保持活动状态。当退出当前作用域时,局部变量将从堆栈中弹出,并且它的强引用消失。
在您的代码中,SKSpriteNode
initWithTexture
方法创建一个新的精灵套件节点并返回它。当函数返回时,init 函数不再具有对该对象的强引用。您保存结果initWithTexture
调用弱变量,因此在该语句的末尾,有NO对对象的强引用。它立即被释放。这就是为什么它变成零。
解决方案:将局部变量更改为strong。改变:
weak var backgroundNode = SKSpriteNode(texture: SKTexture(image: initialBackgroundImage!))
to
var backgroundNode = SKSpriteNode(texture: SKTexture(image: initialBackgroundImage!))
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)