我有一個只讀屬性,我試圖實現NSCopying的對象。它有一個名爲「subConditions」(其中包含「SubCondition」對象)的mutableArray。我讓它只讀,因爲我希望調用者能夠更改數組中的數據,而不是數組本身。在編寫-copyWithZone:方法之前,這一切都非常有效。正確的方法來複制只讀NSMutableArray
經過一番摸索之後,我設法得到了一些似乎可行的東西。我不確定這是否是最佳做法。這裏是我的-copyWithZone:方法的簡化版本:
-(id)copyWithZone:(NSZone*)zone
{
Condition *copy = [[[self class]allocWithZone:zone]init];
NSArray *copiedArray = [[NSArray alloc]initWithArray:self.subConditions copyItems:YES];
[copy.subConditions setArray:copiedArray];
[copiedArray release];
return copy;
}
這是複製readonly mutableArray的正確方法/最佳方法嗎?
謝謝你非常詳盡的解釋! – 2010-06-06 13:35:30
「因爲只有NSMutableArrays響應setArray:」NSMutableArrays不迴應這種事 – user102008 2011-01-20 23:47:27
@ user102008:是的,他們這樣做。 http://developer.apple.com/mac/library/documentation/Cocoa/Reference/Foundation/Classes/NSMutableArray_Class/Reference/Reference.html%23//apple_ref/occ/instm/NSMutableArray/setArray%3A – 2011-01-21 04:17:17