2012-03-07 184 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];