【问题标题】:Swift weak variable behaviour difference?Swift 弱变量行为差异?
【发布时间】: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


    【解决方案1】:

    【讨论】:

    • 非常感谢,我会检查一下。谢谢楼主
    • 你能粘贴你引用的段落/解释吗,我在链接文档中唯一能找到的是“弱引用必须声明为变量,以表明它们的值可以在运行时改变。A弱引用不能声明为常量。”
    猜你喜欢
    • 2017-08-08
    • 2013-07-13
    • 1970-01-01
    • 2016-05-07
    • 1970-01-01
    • 2021-11-26
    • 2019-06-02
    • 1970-01-01
    • 2016-04-06
    相关资源
    最近更新 更多