iOS 中copy的簡單理解

2021-07-11 00:56:24 字數 877 閱讀 3510

乙個物件的準確型別是在分配記憶體空間的時候指定 ,程式設計師指定的型別只是讓該物件有該型別的方法。

能否使用指定類的方法取決於執行時,這個物件的型別是否正確。

(理解這兩句句話很重要)

有可變不可變之分時:

可變 -》不可變  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...