NSMutableArray:getObject方法返回null



这个程序应该在输入中输入5个NSString并打印它们。我把它们放在NSMutableArray中。在循环过程中,如果我尝试打印NSString,它们会被正确打印。但是当我尝试从数组中获取对象时,我不知道为什么它会返回null。因此,如果我尝试在第二个循环中打印它们,它们都是空的。

#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;
}

在行中:

NSMutableArray* array;

您将array声明为NSMutableArray,但没有将指针设置为任何内容,因此array只是nil

您需要这样做来分配和初始化NSMutableArray的实际实例,并将其分配给该指针:

NSMutableArray* array = [[NSMutableArray alloc] init];

您尚未初始化数组。你应该放:NSMutableArray *array = [[NSMutableArray alloc] init];

或者更好:NSMutableArray *array = [[NSMutableArray alloc] initWithCapacity:5];