如何更好地初始化字符串以避免死存储

时间:2012-11-29 22:06:54

标签: ios xcode cocoa-touch nsstring dead-code

我发现了一些像这样的问题,但我找不到这个问题。我有一些初始化为

的字符串
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)中分配,那么当我需要几行时,字符串就会消失。

2 个答案:

答案 0 :(得分:5)

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

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

答案 1 :(得分:0)

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