単一の NSString オブジェクトを割り当て、if-else ブロック内でそれにテキストを割り当てたい状況があります。次のようなコードを書くと:
NSString *string = [NSString alloc];
if (firstCase)
[string initWithString:@"firstCase"];
else if(secondCase)
[string initWithString:@"secondCase"];
[self someFunction:string];
内部でエラーが発生しますsomeFunction
(を使用しようとすると NSInvalidArgumentException がスローされますstring
)。また、コードをステップ実行するときに を入力するsomeFunction
と、コンソールに次のような行が表示されます。
alloc と init をネストするのを忘れましたか?
を参照していstring
ます。
NSMutableString を使用して、各 if-else ブロックの文字列に追加するだけで同じことを試しましたstring = [[NSMutableString alloc] init]
が、前の方法で同じ結果が得られない理由を誰かが知っているかどうか疑問に思っていました。