iOS 中strong,weak,copy,assign區別

基本上:

    NSString類用copy,控件類用weak,,複雜數據類的用strong,數字類,比如INUIgter,nsinter,cgreck這些用assign

1:ARC環境下,strong代替retain.weak代替assign

2:weak的作用:在ARC環境下,,所有指向這個對象的weak指針都將被置爲nil。這個T特性很有用,相信很多開發者都被指針指向已釋放的對象所造成的EXC_BAD_ACCESS困擾過,使用ARC以後,不論是strong還是weak類型的指針,都不會再指向一個已經銷燬的對象,從根本上解決了意外釋放導致的crash。 3:assign的作用:簡單賦值,不改變引用計數,對基礎數據類型 (例如NSInteger,CGFloat)和C數據類型(int, float, double, char, 等) 適用簡單數據類型 
4:copy的作用:建立一個索引計數爲1 的對象,然後釋放舊對象 
5:strong的作用:在ARC環境下,只要某一對象被一個strong指針指向,該對象就不會被銷燬。如果對象沒有被任何strong指針指向,那麼就會被銷燬。在默認情況下,所有的實例變量和局部變量都是strong類型的。可以說strong類型的指針在行爲上跟非ARC下得retain是比較相似的 

6:retain的作用:在非ARC時代,你需要自己retain一個想要保持的對象,ARC環境下就不需要了。現在唯一要做的就是用一個指針指向這個對象,只要指針沒有被重置爲空,對象就會一直在堆上。當指針指向新值的時候,原來的對象就會被release一次。這對實例變量,sunthesize的變量或者是局部變量都是實用的。

轉載:https://blog.csdn.net/longshen_csdn/article/details/50299425

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