我的阵列存在一些问题,我希望这里的任何人都可以告诉我我做错了什么。
我有3个数组:tmpAnswersArray,localAnswersArray& finalAnswersArray。 我也有一个方法来在同一个类中混洗给定的数组。
第一个NSLog显示localAnswersArray的计数是6(它应该如何)。
第三个NSLog显示localAnswersArray计数为0,即使我没有更改该数组中的任何内容。
localAnswersArray = [[NSMutableArray alloc] init];
localAnswersArray = [self shuffleArray:tmpAnswersArray];
[tmpAnswersArray release];
NSLog(@"Shuffled localAnswersArray (count = %d) & removed tmpAnswersArray",[localAnswersArray count]);
finalAnswersArray = [[NSMutableArray alloc] init];
NSLog(@"init finalAnswersArray");
for (int arrayCount = 0; arrayCount < 6; arrayCount++) {
NSLog(@"TEST ---> %d",[localAnswersArray count]);
[finalAnswersArray addObject:[localAnswersArray objectAtIndex:arrayCount]];
}
此代码的第一行是否也保留了数组?
我是否必须以某种方式手动保留它?
为什么数组计数突然下降到0?
感谢您的帮助!
答案 0 :(得分:1)
您需要查看Memory Management Guidelines。
localAnswersArray = [[NSMutableArray alloc] init];
localAnswersArray = [self shuffleArray:tmpAnswersArray];
您创建一个数组(您拥有),然后立即用不同的数组替换它。
似乎你的整个代码块都可以替换为:
finalAnswersArray = [[self shuffleArray:tmpAnswersArray] mutableCopy];