Переключатель Objective-C определяет содержимое строки - PullRequest
1 голос
/ 14 июля 2009

Я пришел из Java, поэтому до сих пор не могу понять, как работать с Obj-C.

В зависимости от предоставленного числа, я хочу, чтобы переменная NSString имела различное содержимое.

В Java я бы сделал что-то вроде этого:

string foo;
switch (numberToSwtich){

    case 1:
       foo = "Something!";
       break;
    case 2:
       foo = "Something Else!";
       break;
}

Очевидно, что в target-c есть два типа String. NSString и NSSMutableString.

Разница в том, что вы можете изменить один на более поздний срок. Однако, как и в java, могу ли я сначала инициализировать NSString, а затем установить ее содержимое, или мне нужно использовать NSMutableString?

Что-то вроде этого ...

NSString *aString = [[NSString alloc] init];

switch ([self getNumberOfSides]) {
    case 1:
        aString = @"A String"; 
        break;
    case 2:
        aString = @"Another String"; 
        break;
}

Я знаю, что есть и другие способы сделать это, например, использовать NSDictionary с числовыми ключами, но я бы хотел использовать переключатель.

Спасибо.

1 Ответ

1 голос
/ 14 июля 2009

Ваш код действителен. Нет необходимости использовать NSMutableString.

Ваш код пропускает память, потому что вы не освобождаете пустую строку, выделенную с помощью alloc . Для пустых строк лучше использовать метод класса "string":

NSString *aString;

switch ([self getNumberOfSides]) {
        case 1:
                aString = @"A String"; 
                break;
        case 2:
                aString = @"Another String"; 
                break;
        default:
                aString = [NSString string];
                break;
}
...