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 に答える