copy表達的屬性與strong類似。但是設定方法並不保留新值,而是將其copy,當屬性為nsstring時,經常用此特質來保護其封裝性,因為傳遞給設定方法的新值可能指向nsmutablestring類的例項。但是nsmutablestring是可以更改的,如果不設定copy,那麼nsstring的值就會在不知情的情況下被更改。
另外block中有時也會使用copy,因為在mrc時代,方法內部的block是在棧區的,使用copy可以把它放到堆區。這時如果不使用copy,那麼就無法使用block的作用域。但是在arc中,編譯器自動幫你實現這個copy,因此用copy和strong都一樣。
最後@property(copy,nonatomic)nsmutablearray *array是會出錯的,因為copy會複製乙個不可變的array,當你使用可變array的方法時,會由於找不到方法而出錯。
iOS 中copy的簡單理解
乙個物件的準確型別是在分配記憶體空間的時候指定 程式設計師指定的型別只是讓該物件有該型別的方法。能否使用指定類的方法取決於執行時,這個物件的型別是否正確。理解這兩句句話很重要 有可變不可變之分時 可變 不可變 copy 可變 可變 mutablecopy 不可變 可變 mutablecopy 不可變...
IOS學習 copy的一些認識
nsmutablestring string nsmutablestring stringwithstring origion retaincount 2 string nsmutablestring string1 origion copy 巨大的數 nsstring stringcopy str...
IOS學習筆記
uiview beginanimations view flip context nil 設定動畫塊 uiview setanimationduration 1.25 動畫時間 uiview setanimationcurve uiviewanimationcurveeaseinout 動畫曲線 u...