2015-09-22 51 views
1

我遇到了一些旧的Swift代码(从6月份第一次使用该语言播放时写得很糟糕),我很好奇为什么函数test失败,但是test2有效?Swift弱变量行为差异?

fatal error: unexpectedly found nil while unwrapping an Optional value 

它是一个愚蠢的例子,因为self.node需要添加到场景中。我只是很好奇,为什么他们的行为不同,我的猜测是它可能是每种方式的实现方式或者编译器处理每种方式都知道正确使用的方式。

class GameScene: SKScene { 
    weak var node: SKNode! 
    weak var color: SKColor! 

    func test() { 
     self.node = SKNode() 
     print(self.node) // Why nil here? 
    } 

    func test2() { 
     self.color = SKColor() 
     print(self.color) // Works fine ... 
    } 
} 

我明白对象在功能范围创建并分配给一个变量声明为弱,其详细了解为何不同?

回答

2
+0

非常感谢,我会检查出来。谢谢主席 – fuzzygoat

+0

你可以粘贴你引用的段落/解释,我可以在链接的文档中找到的唯一东西是“弱引用必须声明为变量,以表明它们的值可以在运行时更改。弱引用不能宣布为一个常数。“ – fuzzygoat