物镜 C 中的二维阵列

发布于 2024-09-10 02:45:04 字数 1316 浏览 1 评论 0原文

我想问一个关于目标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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

巾帼英雄 2024-09-17 02:45:04

看起来您添加到了这个“innerDataArray”中,但是当您达到计数时
在将其添加到outerDataArray之前直接释放它:

        if(i%[titleArray count] == 0 && i!=0)
        {
            [innerDataArray release];
            innerDataArray = [[NSMutableArray alloc]init];

            [outerDataArray addObject:innerDataArray];
        }

不应该吗?

        if(i%[titleArray count] == 0 && i!=0)
        {
            [outerDataArray addObject:innerDataArray];
            [innerDataArray release];
            innerDataArray = [[NSMutableArray alloc]init];

        }

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:

        if(i%[titleArray count] == 0 && i!=0)
        {
            [innerDataArray release];
            innerDataArray = [[NSMutableArray alloc]init];

            [outerDataArray addObject:innerDataArray];
        }

shouldn't it be?

        if(i%[titleArray count] == 0 && i!=0)
        {
            [outerDataArray addObject:innerDataArray];
            [innerDataArray release];
            innerDataArray = [[NSMutableArray alloc]init];

        }
谁许谁一生繁华 2024-09-17 02:45:04
        [temp release];

在显示的代码中,您不保留 temp 并且不应释放它。

            [outerDataArray addObject:innerDataArray];

您添加了一个空的innerDataArray,因此您可能会删除第一组条目。将此行移动到innerDataArray 释放之前,或者在循环开始之前添加第一个innerDataArray。

        [temp release];

In the code shown, you do not retain temp and should not release it.

            [outerDataArray addObject:innerDataArray];

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.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文