我发现了一些像这样的问题,但我找不到这个问题。我有一些初始化为
的字符串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)中分配,那么当我需要几行时,字符串就会消失。
答案 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”;将在编译器在运行时为您执行时正常工作。