2011-10-14 4 views
12

ARC(自動参照カウント)とリファクタリングを自分のコードに適用するためのスイッチを評価しています。私が把握する必要があり中でも が、このあります:ARC環境のUIViewControllerのdidReceiveMemoryWarning

オブジェクトの明示的なリリースはARCによって許可されていない場合、私はdidReceiveMemoryWarningに何をすべき? 現在、私は私のコントローラに属するオブジェクトを解放するために、そのメソッドを使用して、怠惰なゲッターを経由して容易に検索されていること:

- (void)didReceiveMemoryWarning { 
    [_foo release]; _foo = nil; 
    [super didReceiveMemoryWarning]; 
} 

と相対怠惰ゲッター:「そのような実装に不可能だ

- (Foo *)foo { 
    if (_foo) { 
     return _foo; 
    } 
    return (_foo = [[Foo alloc] init]); 
} 

をARCの "パターン" ...そう、私は何をすべきですか? didReiredMemoryWarningをARCで「廃止予定」と見なすべきか/役に立たないと考えるべきか?

答えて

20

ARCは保持コードと解放コードを処理するので、_fooをnilに設定すると、ARC生成コードがリリースを実行できるようになります。あなたは明示的にリリースせず、単にオブジェクトグラフを管理するだけで、ARC生成コードは適切なときにリリースを実行します。

詳細については、AppleのTransitioning To ARC Release Notes文書をお読みください。

0

複数のことができますが、すべてアプリ固有です。配列や辞書を消去し、オブジェクト参照をnil(オブジェクトを削除するARCの方法)に設定するなどのこと。