我有一个大型数组(几百个对象),我需要根据对象中的整数将它分成几个数组,但我不知道我需要多少个数组。我认为使用二维NSMutableArray会起作用,但如果我这样做,那么当我清空tempArray时,它也会清空fullArray中的数组。是否有另一种使用临时可重用数组的方法,一旦将其添加到另一个数组,它就会释放对它的引用。
- (void)createArray{
fullArray=[[NSMutableArray alloc]init];
NSMutableArray *tempArray=[[NSMutableArray alloc] init];
for(int j=0; j<numberOfGames; j++){
for(int i=0; i<[appDelegate.hiddenChars count]; i++){
Chars *charObj=[appDelegate.hiddenChars objectAtIndex:i];
if(charObj.gameID==j){
//NSLog(@"Match!");
[tempArray addObject:charObj];
}
}
[fullArray addObject:tempArray];
[tempArray removeAllObjects]; //this empties it from fullArray too
}
}
我可以获得有多少行和列的变量,但它们不是静态的。我尝试过使用C数组,但是我不能用这种方式创建全局数组。我尝试定义一个全局数组并在create array中使用“new”,但Xcode表示“new”无法识别。 我试过了
id fullArray;//in global scope
fullArray=new id fullArray[rows][columns];//new and id throw exceptions, new unrecognized and id expects ";" before it.
我的另一个想法是创建一个单身人士,但这个问题似乎有些过分。当然有办法处理需要数量不详的数组吗?
我将使用数组来填充具有多个部分的分组表视图。也许我说这一切都错了?
感谢您的帮助。
答案 0 :(得分:1)
更改大约2行,你就可以了。
- (void)createArray{
fullArray=[[NSMutableArray alloc]init];
for(int j=0; j<numberOfGames; j++){
// inside loop
NSMutableArray *tempArray=[[NSMutableArray alloc] init];
for(int i=0; i<[appDelegate.hiddenChars count]; i++){
Chars *charObj=[appDelegate.hiddenChars objectAtIndex:i];
if(charObj.gameID==j){
//NSLog(@"Match!");
[tempArray addObject:charObj];
}
}
[fullArray addObject:tempArray];
[tempArray release]; // but fullArray still owns it
}
}