retain/strong /assign/weak/copy 有什麼區別

簡述 retain/strong /assign/weak/copy 有什麼區別?
答:
任何一個值,在屬性中,本質上保存的都是一個“數字”。
   -如果是對象,保存的是堆中的地址;
   -如果是基本對象,保存的是基本對象的數值;
定義屬性的時候,通常會指定 屬性的類型
-retain 是 MRC ,在設置數值的時候,會對對象引用計數 +1 ;
-strong 是 ARC,與retain等效;
-assign 是 ARC/MRC ,在設置數值的時候,不會做任何附加操作。
   -ARC 中,通常用來保存基礎變量
   -MRC 中,如果不需要引用,通常就用assign
-weak 是 ARC ,用來保存不需要強引用的對象
   weak 與 assign 的區別:
   assign 指向的對象如果被釋放,地址不會有任何變化,效率高但是風險大(野指針)
   weak 指向的對象如果被釋放,地址會立刻變化爲 nil 



發佈了40 篇原創文章 · 獲贊 1 · 訪問量 9萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章