NSMutableArray:getObject方法返回null

时间:2012-03-07 16:01:32

标签: objective-c cocoa

此程序应输入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;
}

2 个答案:

答案 0 :(得分:2)

您尚未初始化阵列。你应该把:NSMutableArray *array = [[NSMutableArray alloc] init];

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

答案 1 :(得分:2)

在这一行:

NSMutableArray* array;

您宣布arrayNSMutableArray,但您没有将指针设置为任何内容,因此array只是nil

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

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