iOSで文字列変数を初期化する2つの方法の違い(,adv/disadv)は何ですか?
NSString *var = @"value"
とNSString *var =[ [NSString alloc] initWithString:@"value"]
コード:
NSString *var = @"value";
NSCFConstantString
コンパイラによって作成され、プログラムのデータの一部として格納されるインスタンスを作成します。応答しないretain
かrelease
、メモリ管理の目的で事実上無視できます。
ただし、コード:
NSString *var =[ [NSString alloc] initWithString:@"value"];
オブジェクトを割り当て、NSString
定数 string の内容で初期化します@"value"
。不要になったときにrelease
d にする必要がありますが、更新することはできません (不変です)。
@"value" は自動解放された文字列を返しますが、initWithString: は解放する必要がある保持された文字列を返します。ARC を使用している場合は、ARC が解放してくれるので違いはありません。