views:

30

answers:

2

Howdy all,

I seem to be generating a lot of questions with this one little iPhone app....

I am attempting to stuff an NSMutableArray with NSStrings, and I am working like this:

...
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];
...

The first block generates no errors, but the subsequent blocks (identical save for the content of each string object) all generate the error, 'Redefinition of myStr'. Why?

I know that this is going to be a facepalm, but I just gotta know, and get beyond this!

hanks for any and all assistance!

Kind regards,

Steve O'Sullivan

+3  A: 

Just remove NSString* from the second block:

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

myStr = [[NSString alloc] ...

Each time you write something like NSString *myStr you declare new variable - and variable names must be different in the same scope. But you can reuse the same variable to store different objects - as you do in the code above

Vladimir
Thanks Vlad! Eh, it was pretty obvious once you pointed that out.... ::sigh:::)
Sosullivan
+1  A: 

Maybe it was just for the sake of example, but your first three lines of code can be substituted with:

[txtArray addObject:@"Jupiter II"]

Also, creating an array of strings is as simple as:

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