这个程序应该在输入中输入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];