基本上:
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