物镜 C 中的二维阵列
我想问一个关于目标C的问题。我过去常常问如何在目标中声明一个2D数组,我得到了2D数组。不过,我修改了一些代码并尝试显示数组的内容。我发现输入有误。谁能帮我指出错误。
// Program: convent a 1D array into 2D array and retrieve the element in the array
// example
// dataArray[0]=First Name, [1]=Last Name, [2]=Tom, [3]=chan, [4]=May, ...
// I want to break the array into outerArray, interArray
NSString *temp;
outerDataArray = [[NSMutableArray alloc]init];
innerDataArray = [[NSMutableArray alloc]init];
for(int i=0; i<[dataArray count]; i++)
{
temp = [dataArray objectAtIndex:i];
[innerDataArray addObject:temp];
[temp release];
if(i%[titleArray count] == 0 && i!=0)
{
[innerDataArray release];
innerDataArray = [[NSMutableArray alloc]init];
[outerDataArray addObject:innerDataArray];
}
}
[innerDataArray release];
NSMutableArray *tempArray;
// display
for(int i=0; i<[outerDataArray count]; i++)
{
tempArray = [outerDataArray objectAtIndex:i];
for(int j=0; j<[innerDataArray count]; j++)
{
NSLog(@"%@", [tempArray objectAtIndex:j]);
}
}
I want to ask a question about the objective C. I used to ask how to declare a 2D array in the objective in the past and I get the 2D array. However, I modify some of the code and try to display the content of the array. I found that the input is wrong. Can anyone help me to point out the mistake.
// Program: convent a 1D array into 2D array and retrieve the element in the array
// example
// dataArray[0]=First Name, [1]=Last Name, [2]=Tom, [3]=chan, [4]=May, ...
// I want to break the array into outerArray, interArray
NSString *temp;
outerDataArray = [[NSMutableArray alloc]init];
innerDataArray = [[NSMutableArray alloc]init];
for(int i=0; i<[dataArray count]; i++)
{
temp = [dataArray objectAtIndex:i];
[innerDataArray addObject:temp];
[temp release];
if(i%[titleArray count] == 0 && i!=0)
{
[innerDataArray release];
innerDataArray = [[NSMutableArray alloc]init];
[outerDataArray addObject:innerDataArray];
}
}
[innerDataArray release];
NSMutableArray *tempArray;
// display
for(int i=0; i<[outerDataArray count]; i++)
{
tempArray = [outerDataArray objectAtIndex:i];
for(int j=0; j<[innerDataArray count]; j++)
{
NSLog(@"%@", [tempArray objectAtIndex:j]);
}
}
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
看起来您添加到了这个“innerDataArray”中,但是当您达到计数时
在将其添加到outerDataArray之前直接释放它:
不应该吗?
It sems you add to this 'innerDataArray' but then when you reach a count
you release it directly before you add it to the outerDataArray:
shouldn't it be?
在显示的代码中,您不保留
temp
并且不应释放它。您添加了一个空的innerDataArray,因此您可能会删除第一组条目。将此行移动到innerDataArray 释放之前,或者在循环开始之前添加第一个innerDataArray。
In the code shown, you do not retain
temp
and should not release it.You add an empty innerDataArray, so you are probably dropping the first set of entries. Move this line to before innerDataArray is released or add the first innerDataArray before the loop starts.