2011-12-17 6 views
1

私は自分の.hにNSTimerを宣言したと/メートルののviewDidLoadに私が持っているコード:私も[タイマー解除]を持っているNSTimer iPhoneをリリースしますか?

timer = [NSTimer scheduledTimerWithTimeInterval:kComplexTimer target:self selector:@selector (main) userInfo:nil repeats:YES]; 

を。私のdeallocで。私は、ビューを終了し、それに戻ったときに

しかし、タイマーが実際にリリースしていない、それは速度の倍増を持っています!どのように私はこれを解決するのですか&何が間違っているのですか?

おかげ

答えて

3

回答ニース、しかし時間が不要な例外を避けるためにゼロであるかどうかを確認することは良い..

if(timer ! = nil) 
{ 
    [timer invalidate]; 
    timer = nil; 
} 

は `nil`は非常に重要なです...

6

あなたがそれを保持していないとして、あなたはそれを解放する必要はありません - 原則として。 あなたは自分のタイマーを停止します[timer invalidate];を呼び出すするだけです。

2
[timer invalidate]; 
timer = nil; 

2行目は "、あなたはNSTimer

+0

+1をありがとうございます。以前はタイマーやその部分を追加するまで再利用していました。 – dredful

1

をリセットしたい場合は、「維持」、それが「新しい」、「ALLOC」により作成されていないことをオブジェクトにリリースを呼び出してはいけませんが重要ですコピー "。

このケースでは、scheduledTimerWithTimeInterval法でタイマーを作成していた、だから、releaseメソッドを呼び出しますが、タイマーを停止するには、[タイマー無効化]を呼び出してはいけません。

関連する問題