NSString alloc / init生成'重新定义myStr'错误....?

时间:2010-08-20 18:45:24

标签: objective-c iphone xcode

我似乎用这个小iPhone应用程序产生了很多问题....

我试图用NSStrings填充NSMutableArray,我的工作方式如下:

...
NSString *myStr = [[NSString alloc] initWithString:@"Jupiter II"]; 
[txtArray addObject: myStr];
[myStr release];

NSString *myStr = [[NSString alloc] initWithString:@"Could this be OUR Waffles?"];
// in this second block, the line above generates the error: 'Redefinition of myStr'. Why?
[txtArray addObject: myStr];
[myStr release];
...

第一个块没有产生错误,但后续的块(每个字符串对象的内容相同)都会产生错误,“重新定义myStr”。为什么呢?

我知道这将是一个facepalm,但我必须知道,并超越这个!

了解任何和所有帮助!

亲切的问候,

史蒂夫奥沙利文

2 个答案:

答案 0 :(得分:3)

只需从第二个块中删除NSString *:

NSString *myStr = [[NSString alloc] initWithString:@"Jupiter II"]; 
[txtArray addObject: myStr];
[myStr release];

myStr = [[NSString alloc] ...

每次编写类似NSString *myStr的内容时,都会声明新变量 - 并且变量名在同一范围内必须不同。但是您可以重复使用相同的变量来存储不同的对象 - 就像在上面的代码中那样做

答案 1 :(得分:1)

也许只是为了举例,但你的前三行代码可以替换为:

[txtArray addObject:@"Jupiter II"]

此外,创建字符串数组非常简单:

[NSArray arrayWithObjects:@"Jupiter II",
                          @"Could this be OUR Waffles",
                          nil];