ARCを使用すると、他の参照のない文字列を指している場合に自動的に割り当てが解除され、新しい文字列オブジェクトに設定されます。str
新しい値を設定するときに、古い文字列の管理について心配する必要はありません。
ARCは自動参照カウントの略で、適切なタイミング(の値を変更したときなど)に呼び出しretain
を処理します。実際、これらの関数を手動で呼び出すことはできなくなりましたが、同じことが「舞台裏」で行われています。release
str
余談ですが、「nilでない場合、NSString*strの割り当てを手動で解除することはできません」と言います。ARCを使用するときにオブジェクトの割り当てを解除するために通常行うことは、オブジェクトへのすべての参照をに設定することnil
です。したがって、この場合、文字列の割り当てを解除する場合(それが文字列への唯一の参照であると想定)、単に: に設定するstr
必要があります。ただし、前述したように、新しい値を設定するためにこれを行う必要はないことに注意してください。ARCは、両方を同時に処理できるほど賢いです。str
nil
str = nil;
str
もう1つ余談ですが、次のコード行があります。
str = [[NSString alloc] initWithString:localStr];
実際にコピーを作成する場合は、これを次のように置き換えることができます。
str = [localStr copy];
少し短くてわかりやすいです。多くの場合、実際のコピーは必要なく、既存の文字列への参照を保持できるため、次を使用できます。
str = localStr;