これは初心者の質問です。 私は今日変数新しい文字列を必要とするので、私はこのようなものでした:新しい文字列を初期化する
NSString* newString = nil;
if(something)
newString = @"a value";
else
newString = @"different value";
をし、それがうまく働きました。それでも、私は、メモリの割り当てについて少し知っている、と私は、これは何とか問題を引き起こす可能性がある恐れので、私は最後にコードを変更:それは私が以前に何をしたか悪い習慣
NSString* newString = [NSString stringWithFormat:@""];
if(something) ...
ですか? 私はいくつかの変数が自動的に割り当てられることを知っていますので、allocを呼び出す必要はありませんが、nilとしても初期化しないでしょうか? この質問は愚かに聞こえるならば、私は[編集] これは、@対ゼロについての質問ではありません
nilを..私は、PHPからObjective-Cのに来て、メモリ管理についての私の知識が近くにあり、ごめんなさい""; 私の質問は、単純にNSString = something
(nil、@ ""、@ "a value")を使用しても問題がない場合です。一般的には、オブジェクトに対してこれを実行しても問題ありません。例えば は、代わりif
の両方の分岐がnewString
に値を割り当てるので、私は単にNSRandomObject = aValue;
もちろん、それは効果がありません、それはアイデアです:私はNSString * theString = @ "何か"を使用することはできません。それが正しく宣言されていないと私に教えてくれるので、if内部、そしてelse内部のtheString。だから私はif/else構造の前に空のinitを使ったのです。 – BBog
@BogdanBucur 'if 'の両側で値をオーバーライドする場合(つまり無条件に)、' nil'に初期化するほうが良いです。 – dasblinkenlight
ありがとう、それは私が知る必要があったものです!私はあなたの助けに感謝します – BBog