2012-03-07 250 views
0

这个程序应该在输入5级的NSString的,并打印出来。 我把它们放在一个NSMutableArray中。 在循环,如果我尝试打印的NSString的他们正确打印。 但是当我尝试从阵列获取的对象,我不知道为什么它返回null。 所以,如果我尝试打印他们在第二循环中,他们都为空。的NSMutableArray:getObject方法返回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; 
} 
+0

的[为什么NSMutableArray中显示的0计数的大小?]可能重复(HTTP:/ /stackoverflow.com/questions/9605251/why-is-nsmutablearray-showing-count-size-of-0)的[无法项目添加到一个NSMutableArray伊娃] – JeremyP 2012-03-07 16:38:58

+0

可能重复(http://stackoverflow.com/questions/7125326 /不能加项到一个-NSMutableArray中,伊娃) – 2012-03-07 19:52:55

回答

2

在这一行:

NSMutableArray* array; 

您声明array,是一个NSMutableArray,但你没有指针设置为任何东西,所以array只是nil

你想这样做,而不是分配和初始化的NSMutableArray实际实例,并将其分配给该指针:

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

您还没有初始化您的数组。你应该把:NSMutableArray *array = [[NSMutableArray alloc] init];

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