Разделение alloc и init при инициализации NSString - PullRequest
0 голосов
/ 10 августа 2011

У меня есть ситуация, когда я хочу выделить один объект NSString и назначить ему текст внутри блока if-else. Когда я пишу код так:

NSString *string = [NSString alloc];  
if (firstCase) 
    [string initWithString:@"firstCase"];  
else if(secondCase)
    [string initWithString:@"secondCase"];  
[self someFunction:string];

Я получаю ошибку внутри someFunction (выдает исключение NSInvalidArgumentException при попытке использовать string). Кроме того, когда я выполняю свой код, когда я ввожу someFunction, консоль выдает строку, которая говорит:

Вы забыли вложить alloc и init?

, что относится к string.

Я пытался сделать то же самое, используя NSMutableString и просто делая string = [[NSMutableString alloc] init] и просто добавляя к строке в каждом блоке if-else, но мне было интересно, знает ли кто-нибудь, почему предыдущий способ не дает таких же результатов.

1 Ответ

0 голосов
/ 10 августа 2011

Возможно ли, что вы столкнулись с ситуацией, когда вы не соответствуете требованиям для if и else if? Возможно, вы захотите перепроверить, какие у вас дела ... или вы можете по умолчанию использовать строку "". РЕДАКТИРОВАТЬ: вы можете добавить к строке после того, как вы объявили ее к некоторому значению, используя stringByAppendingString

NSString *string = [[NSString alloc] initWithString:@""];
if(case1)
   [string stringByAppendingString:@"desired string"];
elseif(case2)
   [string stringByAppendingString:@"other string"];

вот ссылка на справочник Apple по классу NSString: http://developer.apple.com/library/ios/#documentation/Cocoa/Reference/Foundation/Classes/NSString_Class/Reference/NSString.html

...