iOS基礎 - Copy

copymutableCopy

一個對象使用copymutableCopy方法能夠建立對象的副本spa

copy – 須要先實現NSCoppying協議,建立的是不可變副本(NSStringNSArrayNSDictionary)指針

mutableCopy – 須要先實現NSMutableCopying協議,建立的是可變副本(NSMutableStringNSMutableArrayNSMutableDictionary)對象

深複製:內容拷貝,源對象和副本指向的是不一樣的兩個對象。源對象引用計數器不變,副本計數器設置爲1it

淺複製:指針拷貝,源對象和副本指向的是同一個對象。對象的引用計數器+1,其實至關於作了一次retain操做io

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

 

爲自定義類添加複製功能

若是想自定義copy,那麼就必須遵照NSCopying,而且實現 copyWithZone:方法class

若是想自定義mutableCopy,那麼就必須遵照NSMutableCopying,而且實現 mutableCopyWithZone: 方法引用

copy爲例,建議用[self class]代替直接類名方法

- (id)copyWithZone:(NSZone *)zone {im

    id copy = [[[self class] allocWithZone:zone] init];

    // 作一些屬性的初始化.....

    return copy;

}

相關文章
相關標籤/搜索