2D массив в объективе C - PullRequest
0 голосов
/ 19 июля 2010

Я хочу задать вопрос об объекте 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]);
            }

        }

Ответы [ 2 ]

1 голос
/ 19 июля 2010
        [temp release];

В показанном коде вы не сохраняете temp и не должны его освобождать.

            [outerDataArray addObject:innerDataArray];

Вы добавляете пустой innerDataArray, поэтому вы, вероятно, отбрасываете первый набор записей.Переместите эту строку до того, как будет выпущен innerDataArray, или добавьте первый innerDataArray до начала цикла.

1 голос
/ 19 июля 2010

Он добавляет вас в этот «innerDataArray», но затем, когда вы достигнете счетчика вы освобождаете его непосредственно перед добавлением в externalDataArray:

        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];

        }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...