0

我发现了一些这样的问题,但我找不到这个特定的问题。我有许多初始化为的字符串

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

然后根据 if/else 块的结果为其分配一个值:

if ([anotherThing isEqualToString:@"boogers"]) {
    string = [NSString stringWithFormat:@"some characters"];
} else {
    string = [NSString stringWithFormat:@"some _other_ characters"];
}

然后string在该方法的后面使用。

我怎样才能做到这一点,而不会在 alloc/init 阶段留下一个死存储?如果我在 if (或 else )内分配,当我需要它的时候,字符串已经消失了几行。

4

2 回答 2

5

你不必在第一行初始化字符串——你只需要声明它:

NSString *string = nil;
if ([anotherThing isEqualToString:@"boogers"]) {
    string = @"some characters";
} else {
    string = @"some _other_ characters";
}
于 2012-11-29T22:09:25.147 回答
0

[NSString stringWithFormat:] 将为您初始化一个新的 NSString 对象,基本上您所做的是每次声明一个新对象,只需将字符串的指针设置为 NSSTring *someString, *someOtherString, *allTheStringsYouNeed; 然后使用任何类方法来初始化它甚至@“Characters”;将在编译器在运行时为您执行此操作时正常工作。

于 2012-11-29T22:21:55.333 回答