【发布时间】:2015-09-22 21:32:27
【问题描述】:
我遇到了一些旧的 Swift 代码(从 6 月份我第一次使用该语言时就写得很糟糕),我很好奇为什么函数 test 失败,但 test2 有效?
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 ...
}
}
我了解对象是在函数范围内创建并分配给声明为弱的变量,更多关于为什么不同?
【问题讨论】:
标签: swift weak-references sknode