Objective-C开关定义字符串的内容

Objective-C开关定义字符串的内容,objective-c,string,switch-statement,Objective C,String,Switch Statement,我有java的背景,所以我仍在掌握使用Obj-C做事情的一些方法 根据提供的数字,我希望NSString变量具有不同的内容 在java中,我会这样做: string foo; switch (numberToSwtich){ case 1: foo = "Something!"; break; case 2: foo = "Something Else!"; break; } 显然,objective-c中有两种类型的字

我有java的背景,所以我仍在掌握使用Obj-C做事情的一些方法

根据提供的数字,我希望NSString变量具有不同的内容

在java中,我会这样做:

string foo;
switch (numberToSwtich){

    case 1:
       foo = "Something!";
       break;
    case 2:
       foo = "Something Else!";
       break;
}
显然,objective-c中有两种类型的字符串。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,但我想使用开关


谢谢。

您的代码完全有效。没有必要使用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;
}

你的代码完全有效。没有必要使用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;
}

谢谢我不知道为什么我认为那不管用。这很合乎逻辑。一定是这个方括号的地方让我感到奇怪!使用[NSString]没有真正的需要或目的-只需使用@”。“string”工厂方法是为了保持一致性,在可变版本中也可以使用它,因为它很有用([NSMutableString]);这样做总是好的,谢谢。我不知道为什么我认为那不管用。这很合乎逻辑。一定是这个方括号的地方让我感到奇怪!使用[NSString]没有真正的需要或目的-只需使用@”。“string”工厂方法是为了保持一致性,在可变版本中也可以使用它,因为它很有用([NSMutableString]);这样做总是好的。