2015-09-22 49 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