我想將數組複製到另一個但它不工作。我想要複製的原始數組包含五個對象;結果數組是空的。Objective-c複製對象錯誤
陣列被設置爲這樣的特性:
@property (nonatomic, retain) NSMutableArray *drinks;
我viewDidLoad
方法是這樣的:
- (void)viewDidLoad
{
[super viewDidLoad];
checkCounter = 0;
Drink *drink1 = [[[Drink alloc] initWithImage:nil name:@"Test1" caffeine:11] autorelease];
Drink *drink2 = [[[Drink alloc] initWithImage:nil name:@"Test2" caffeine:22] autorelease];
Drink *drink3 = [[[Drink alloc] initWithImage:nil name:@"Test3" caffeine:33] autorelease];
Drink *drink4 = [[[Drink alloc] initWithImage:nil name:@"Test4" caffeine:44] autorelease];
Drink *drink5 = [[[Drink alloc] initWithImage:nil name:@"Test5" caffeine:55] autorelease];
NSMutableArray *array = [[NSMutableArray alloc] initWithObjects: drink1, drink2, drink3, drink4, drink5, nil];
drinks = [array mutableCopy];
}
沒有人有任何想法,爲什麼它不起作用?我試過使用常規的copy
方法,只是簡單地分配它,但它不起作用。
編輯1:「數組」變量實際上被正確初始化,但它不會被複制。我試圖直接初始化「飲料」數組,但不管我嘗試「飲料」數組是否爲空。
編輯2:我添加了屏幕截圖,希望能夠澄清一些事情。
一定出事了與飲料對象和陣列可能沒有正確設置。試着將NSMutableArray *數組設置爲幾個字符串,並將可變副本做到另一個NSMutableArray。一切正常。或者你是否忘記在NSLog中打印數組,如果這是你正在檢查的地方?你只需在那裏打印測試。 – Bourne
你保留'array'兩次;一次用init,一次用retain。您可能需要將保留更改爲autorelease,以免泄漏。 –
你的Drink對象是否符合NSCopying協議?也就是說,你的Drink對象是否實現了這個方法 - (id)copyWithZone:(NSZone *)zone? – trudyscousin