此程序应输入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;
}
答案 0 :(得分:2)
您尚未初始化阵列。你应该把:NSMutableArray *array = [[NSMutableArray alloc] init];
或更好:NSMutableArray *array = [[NSMutableArray alloc] initWithCapacity:5];
答案 1 :(得分:2)
在这一行:
NSMutableArray* array;
您宣布array
为NSMutableArray
,但您没有将指针设置为任何内容,因此array
只是nil
。
您希望这样做来分配和初始化NSMutableArray
的实际实例并将其分配给该指针:
NSMutableArray* array = [[NSMutableArray alloc] init];