2012-04-19 17 views
4

この3つのケースで私はメモリリークがありますか?ローカル変数がARCでメモリリークを引き起こす可能性がありますか?

    を__strong

    - (void)function { 
        __strong NSString *string = [[NSString alloc] initWithString: @"Hello World"]; 
    } 
    
  • ませんを__strongとnilの

    - (void)function { 
         NSString *string = [[NSString alloc] initWithString: @"Hello World"]; 
    } 
    
  • にノーセットをnilにノーセットが、使用を__strong

  • しかし

    nilを設定自動参照カウント(ARC)で
    - (void)function { 
        NSString *string = [[NSString alloc] initWithString: @"Hello World"]; 
        string = nil; 
    } 
    

私は任意のキーワードを設定しない場合、私は、変数がを__strong であると仮定?

+2

No、No、No、Yes :) – dasblinkenlight

+0

NSString * string = @ "Hello World"; 'はもっと短くなります。メソッド内では、他のアクションは必要ありません。 –

答えて

6

所有者修飾子を指定しない場合は、暗黙的に__strongです。次に、変数が宣言されているローカルスコープの終わりに、変数をnilに設定したかどうかにかかわらず、コンパイラはリリースを挿入します。

したがって、あなたのローカル変数は、漏れなしの3つのケースすべてでリリースされます。

関連する問題