iOS開發之Copy & MutableCopy及深複製 & 淺複製

1、使用copymutableCopy方法能夠建立一個對象的副本。指針

copy對象

(1)須要實現NSCoppying協議it

(2)建立的是不可變副本(如NSString、NSArray、NSDictionary)io

mutableCopytable

(1)須要先實現NSMutableCopying協議class

(2)建立的是可變副本(如NSMutableString、NSMutableArray、NSMutableDictionary)引用

【備註】Copy的目的是創建副本,同時修改原始對象和複本不會互相干擾方法

2、深複製 & 潛複製協議

深複製:tab

(1)內容拷貝,源對象和副本指向的是不一樣的兩個對象

(2)源對象引用計數器不變,副本計數器設置爲1

淺複製:

(1)指針拷貝,源對象和副本指向的是同一個對象

(2)對象的引用計數器+1,其實至關於作了一次retain操做

【備註】只有不可變對象建立不可變副本(copy)纔是淺複製,其餘都是深複製

3、自定義對象的copyWithZone

- (id)copyWithZone:(NSZone *)zone

{

    Person *p = [[[self class] allocWithZone:zone] init];

   

    p.name = self.name;

    p.age = self.age;

   

    return p;

}

相關文章
相關標籤/搜索