3

例えば、

  1. NSString *string = [NSString stringWithString:@"a string"];
    
  2. NSString *string = [[NSString alloc] initWithString:@"a string"];
    

文字列について話している間、次のように文字列を設定することによる違いはありますか:

    NSString *string = @"a string";

?

最後に、これは NSString に関する特定の質問ではありません。すべての NSObjects のより広い範囲について質問しています。

4

1 に答える 1

4

ARC には違いはありませんが、それ以前は違いがありました。不要なときにalloc/init必要な参照カウントが少なくとも 1 のアイテムを返しますが、クラス メソッドは自動解放されたアイテムを返します。保持したい場合はrelease必要です。retainARC コンパイラはこれらすべてを認識しており、所有権の仕様に基づいて保持/解放を処理します。

于 2012-07-19T17:40:55.560 に答える