什么情况使用 weak 关键字,相比 assign 有什么不同?
生活随笔
收集整理的這篇文章主要介紹了
什么情况使用 weak 关键字,相比 assign 有什么不同?
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
什么情況使用 weak 關鍵字?
在 ARC 中,在有可能出現循環引用的時候,往往要通過讓其中一端使用 weak 來解決,比如: delegate 代理屬性
自身已經對它進行一次強引用,沒有必要再強引用一次,此時也會使用 weak,自定義 IBOutlet 控件屬性一般也使用 weak;當然,也可以使用strong。
不同點:
weak?此特質表明該屬性定義了一種“非擁有關系” (nonowning relationship)。為這種屬性設置新值時,設置方法既不保留新值,也不釋放舊值。此特質同assign類似, 然而在屬性所指的對象遭到摧毀時,屬性值也會清空(nil out)。 而?assign?的“設置方法”只會執行針對“純量類型” (scalar type,例如 CGFloat 或 NSlnteger 等)的簡單賦值操作。
assign 可以用非 OC 對象,而 weak 必須用于 OC 對象
轉載于:https://www.cnblogs.com/huangzs/p/7515362.html
總結
以上是生活随笔為你收集整理的什么情况使用 weak 关键字,相比 assign 有什么不同?的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 递归和分治的概念性的理解
- 下一篇: HDU - 1024 Max Sum P