NSString alloc / init генерирует ошибку «Переопределение myStr» ....? - PullRequest
0 голосов
/ 20 августа 2010

Я, кажется, задаю много вопросов с этим маленьким приложением для iPhone ....

Я пытаюсь заполнить NSMutableArray NSStrings, и я работаю так:

...
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».Почему?

Я знаю, что это будет лицевая маска, но я просто должен знать и выйти за пределы этого!

жаждет любой помощи!

ДобрыйС уважением,

Стив О'Салливан

Ответы [ 2 ]

3 голосов
/ 20 августа 2010

Просто удалите NSString * из второго блока:

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

myStr = [[NSString alloc] ...

Каждый раз, когда вы пишете что-то вроде NSString *myStr, вы объявляете новую переменную - и имена переменных должны быть разными в одной и той же области видимости. Но вы можете повторно использовать одну и ту же переменную для хранения разных объектов - как вы делаете в приведенном выше коде

1 голос
/ 20 августа 2010

Возможно, это просто для примера, но первые три строки кода можно заменить на:

[txtArray addObject:@"Jupiter II"]

Кроме того, создание массива строк так же просто, как:

[NSArray arrayWithObjects:@"Jupiter II",
                          @"Could this be OUR Waffles",
                          nil];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...