【问题标题】:NSString alloc/init generates 'Redefinition of myStr' error....?NSString alloc/init 生成“重新定义 myStr”错误....?
【发布时间】:2010-08-20 18:45:24
【问题描述】:

我似乎对这个小小的 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];
...

第一个块没有产生错误,但随后的块(每个字符串对象的内容相同的保存)都会产生错误,'Redefinition of myStr'。为什么?

我知道这将是一个面部护理,但我只需要知道,并超越这个!

感谢所有帮助!

亲切的问候,

史蒂夫·奥沙利文

【问题讨论】:

    标签: objective-c iphone xcode


    【解决方案1】:

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

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

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

    【讨论】:

    • 谢谢弗拉德!呃,一旦你指出这一点就很明显了...... ::sigh:: :)
    【解决方案2】:

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

    [txtArray addObject:@"Jupiter II"]
    

    另外,创建一个字符串数组很简单:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-12-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-02-16
      • 2011-03-17
      相关资源
      最近更新 更多