我想複製或克隆自己寫的類的對象。 但是,如果我調用複製功能,只有指針被複制。所以如果我改變複製的對象,原來的對象也會改變。IPhone:Copy/Clone
有沒有一種方法/函數來真正克隆一個對象?
問候 梅拉妮
我想複製或克隆自己寫的類的對象。 但是,如果我調用複製功能,只有指針被複制。所以如果我改變複製的對象,原來的對象也會改變。IPhone:Copy/Clone
有沒有一種方法/函數來真正克隆一個對象?
問候 梅拉妮
一個對象可以如果它的類採用NSCopying協議並實現它的一個方法,copyWithZone:被複制。
- (id)copyWithZone:(NSZone *)zone{
MyClass *copy = [[[self class] allocWithZone: zone] init];
[copy setProperty1:[self property1]];
return copy;
}
我已經閱讀過這個。但我真的不明白什麼區域是? 「區域標識要爲新實例分配的內存區域,如果區域爲NULL,則新的實例從默認區域分配,該區域從函數NSDefaultMallocZone返回。」那麼我需要爲Zone編寫什麼? – DeFlo 2012-01-16 10:57:02
@MeMa,好評。我認爲你不需要擔心NSZone,只需使用默認區域即可。 NSZone允許存儲分配,處理和釋放對象的信息。 – beryllium 2012-01-16 11:19:15
請參閱此文檔http://www.cocoadev.com/index.pl?NSZone – beryllium 2012-01-16 11:19:46