NSMutableArray: метод getObject, возвращающий ноль - PullRequest
0 голосов
/ 07 марта 2012

Эта программа должна взять 5 входных данных NSString и распечатать их. Я поместил их в NSMutableArray. Во время цикла, если я пытаюсь напечатать строки NSString, они печатаются правильно. Но когда я пытаюсь получить объекты из массива, я не знаю, почему он возвращает ноль. Поэтому, если я попытаюсь напечатать их во втором цикле, все они будут нулевыми.

#import <Foundation/Foundation.h>

int main (int argc, const char * argv[])
{
    NSAutoreleasePool* pool=[[NSAutoreleasePool alloc]init];
    NSMutableArray* array;
    NSString* str=[[NSString alloc]init];
    char* cstr;
    cstr=(char*)calloc(100,sizeof(char));
    for(int i=0;i<5;i++)
    {
        fgets(cstr,100,stdin);
        str=[NSString stringWithUTF8String:cstr];
        [array addObject : str];
    }
    for(int i=0;i<5;i++)
    {
        str=[array objectAtIndex:i];
        NSLog(@"%@",str);
    }        
    [pool drain];
    return 0;
}

Ответы [ 2 ]

2 голосов
/ 07 марта 2012

В этой строке:

NSMutableArray* array;

Вы объявляете array как NSMutableArray, но вы не устанавливаете указатель на что-либо, поэтому array это просто nil.

Вы хотите сделать это вместо того, чтобы выделить и инициализировать фактический экземпляр NSMutableArray и назначить его этому указателю:

NSMutableArray* array = [[NSMutableArray alloc] init];
2 голосов
/ 07 марта 2012

Вы не инициализировали свой массив.Вы должны поставить: NSMutableArray *array = [[NSMutableArray alloc] init];

или еще лучше: NSMutableArray *array = [[NSMutableArray alloc] initWithCapacity:5];

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