iOS中copy 學習筆記

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的方法時,會由於找不到方法而出錯。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章