2011-01-18 6 views
0

宣言。あなたのviewdidload内に物を割り当てる最も安全な方法

@property (nonatomic, retain) footballResultsParser * FBRP; 

allocの方法。

-(void) viewDidLoad 
{ 
    if (FBRP == nil) 
    { 
    FBRP = [[footballResultsParser alloc] init]; 
    [FBRP updateResults]; 
    } 
    } 

viewDidLoadでオブジェクトを適切かつ安全に割り当てる方法はありますか? viewDidLoadが複数回呼び出され、オブジェクトがすでに存在する可能性があると想定します。

安全にdeallocするには。

-(void) dealloc 
{ 
    if (FBRP != nil) 
    { 
    [FBRP release]; 
    } 
} 

これはメモリ管理を行う良い方法はありますか?

+0

あなたの保有数はそのようにオフになります。あなたは今、2のカウントを保持するオブジェクトウィットhaを持っていると思います。 –

+0

@Stefan Hいいえ、彼は '自己を使わなかったので、彼はすべきではありません。FBRP = [[footballResultsParser alloc] init]; ' – Altealice

+0

良いコール、私は彼がそれのためにセッターを使用していなかったという事実を完全に逃した。ありがとう! –

答えて

3

また、それらをviewDidUnloadで解放する必要があります。参考までに、UIViewController class referenceに関連する文書があります。

メモリ不足の警告が発生した場合、それがリロードまたは 後でもう一度それらを再作成することができます知っていれば、 のUIViewControllerクラスはその 見解をパージします。この が発生した場合、それはまた、あなたのコード にして作成されたnibファイルがロードされたオブジェクト 含む あなたのビュー階層に関連付けられている 任意のオブジェクト、オブジェクト の所有権を放棄する機会を与えるために viewDidUnloadメソッドを呼び出しますあなたのviewDidLoadメソッド、 と実行時に遅く作成されたオブジェクト とビュー階層に追加されます。あなたのビューコントローラ は、コンセント(プロパティやIBOutlet キーワードを含む生 変数)が含まれている場合 通常、あなたはありません それらのコンセントまたは任意の 他のビューに関連するデータの 所有権を放棄する viewDidUnloadメソッドを使用する必要があります長いニーズ。

Btwをリリースするときに、オブジェクトがnilであるかどうかを確認する必要はありません。メッセージをnilに送信することは何もせず、安全です。

2

あなたは、私が想定し保持するFBRPプロパティを設定し、のsynthesizeを利用しているので、それからだけで使用します(通常)のviewDidLoadで

self.FBRP = [[[footballResultsParser alloc] init] autorelease]; 

をしてのdeallocで解放します。プロパティの保持のために自動解放後に保持カウントが1だけ増加します(はい、自己表記を使用)

+0

だからself.varの使用は@propertyと@synthesizeの使用と関係があります。いつもその理由が疑問に思っていました。私は決してしません。私はそれについてもっと知る必要があると思います。 –

+0

あなたは合成しているアクセサを使用していることを確認したいだけです(この場合、保持を適切に処理するため)。この場合、この特定のView ControllerのFBRPプロパティを設定します – tbone

0

initメソッドでインスタンスを割り当てる必要があります。 そして変数_FBRP(または呼び出し方法)を初期化する必要がありますが、プロパティは初期化しないでください。

-(id)init 
{ 
    if (self = [super init]) 
    {  
     _FBRP = [[footballResultsParser alloc] init]; 
    } 
    return self; 
} 

とのdealloc

-(void) dealloc 
{ 
    [FBRP release]; 
    [super dealloc]; 
} 
関連する問題