乙個物件的準確型別是在分配記憶體空間的時候指定 ,程式設計師指定的型別只是讓該物件有該型別的方法。
能否使用指定類的方法取決於執行時,這個物件的型別是否正確。
(理解這兩句句話很重要)
有可變不可變之分時:
可變 -》不可變 copy
可變 -》可變 mutablecopy
不可變 -》可變 mutablecopy
不可變 -》不可變 copy 不可變做一次copy 得到不可變 只是引用計數器+1 和strong屬性一致。
總結:只要有可變都會新建副本 注意:不可變的物件不要使用copy 否則變成了不可變
自定義物件的copy (nsobect本身不支援nscopying協議,因此子類必須遵守並實現
copywithzone
方法)
@inte***ce person : nsobject@property(nonatomic ,copy)nsstring *name;
@end
@implementation person
-(id)copywithzone:(nszone *)zone
@end
建立乙個繼承自person得子類 實現copy操作
@inte***ce student :person
@property(nonatomic,strong)nsstring *num;
@end
@implementation student
-(id)copywithzone:(nszone *)zone
@end
iOS中copy 學習筆記
copy表達的屬性與strong類似。但是設定方法並不保留新值,而是將其copy,當屬性為nsstring時,經常用此特質來保護其封裝性,因為傳遞給設定方法的新值可能指向nsmutablestring類的例項。但是nsmutablestring是可以更改的,如果不設定copy,那麼nsstring的...
python中的copy模組理解
學習簡單而使用的copy模組 copy模組中只有兩個方法 copy.copy和copy.deepcopy,分別稱之為淺拷貝和深拷貝,以澡堂子為例來解釋。import copy 1.copy.copy a 1,2,3,x y a引用 租賃 使用 這個澡堂子的四個隔間 位址 其中 x y 是乙個包間,適...
深淺Copy的理解
在python裡對物件進行拷貝有三個,即賦值,深拷貝,淺拷貝。而物件又分為兩種,一種是不可變物件 字串 元組 數字 一種是可變物件 列表 字典 而深淺拷貝有三種情況 拷貝的是不可變物件 拷貝的是可變物件 拷貝的可變物件裡面還有子物件 import copy list0 hello,world lis...