Swift中的var
和weak var
有什麼區別?Swift中var和var的區別是什麼
3
A
回答
9
這與ARC如何管理對象的內存有關。
使用var
限定強參考對象,同時使用weak var
限定弱參考對象。
只要存在對該對象的一個或多個強引用,對象就會一直保留在內存中。使用弱參考可以讓您持有對象的引用,而不會增加所謂的「保留計數」。
如果沒有其他內容持有對您的weak var
的引用,則該對象將被釋放,並且您的weak var
將衰減至nil
。 當您僅使用var
時,不會發生這種情況,因爲這定義了對該對象的強引用,因此應防止它釋放。
這與「強」與「弱」在Objective-C中的工作方式相同,我建議您閱讀this answer,因爲它完全適用於Swift。
作爲Swift的具體說明,這就是爲什麼聲明爲weak var
的任何內容必須是可選類型的原因。
+0
感謝您的好消息! – nonamexd 2015-04-05 20:10:10
相關問題
- 1. {$ var}和$ var之間有什麼區別?
- 2. 「var = $ {var:-word}」和「var = $ {var:= word}」有什麼區別?
- 3. 在bash腳本中$ {VAR:-...}和$ {VAR:?...}之間的區別是什麼
- 4. static_cast <int>(var)和*(int *)&var之間的區別是什麼?
- 5. JQuery:「var test」和「var $ test」之間的區別是什麼
- 6. apache中的$ {var}和%{VAR}有什麼區別?
- 7. JavaScript中的'var $ x'和'var x'有什麼區別?
- 8. Typescript中var和let有什麼區別?
- 9. 什麼是$ {VAR}和{$ VAR}
- 10. CocosBuilder中'Doc root var'和'Owner var'有什麼區別
- 11. 在JavaScript中,var a = 5有什麼區別。和var a = 5?如
- 12. 在Objective-C中Type * var和Type * var之間有什麼區別?
- 13. 在PHP中,「string」。$ var和「string $ var」有什麼區別?
- 14. var和quote有什麼區別?
- 15. ObjectQuery和「var」有什麼區別?
- 16. var和const有什麼區別?
- 17. $ {var:-word}和$ {var-word}之間有什麼區別?
- 18. 使用defvar時* var *和var有什麼區別?
- 19. var myvar有什麼區別;和var myvar = null;?
- 20. `var in array`和`array.indexOf(var)`有什麼區別?
- 21. 'false === $ var'和'$ var === false'之間有什麼區別?
- 22. def func(var)和def func =(var)有什麼區別?
- 23. var t:MyClass = MyClass(o);有什麼區別?和var t:MyClass = o as MyClass;
- 24. var = 1和var = 1的區別
- 25. int:int和var在swift之間有什麼區別
- 26. `if var`和`if let` in swift有什麼區別?
- 27. Var和新的區別
- 28. var num = 30和var num = new Number(30)在JavaScript中有什麼區別?
- 29. 這是什麼jQuery代碼做 - 函數($)和VAR = VAR => VAR =>
- 30. 'string'== $ var或$ var =='string'的區別?
您能澄清Swift書中「弱引用」一節中的哪一部分對您不清楚嗎? – 2015-04-05 20:04:56
我不使用書籍,但在YouTube上觀看視頻, – nonamexd 2015-04-05 20:05:51
@nonamexd我建議您閱讀免費書...它是免費的... – nhgrif 2015-04-05 20:06:05