IBActionがアタッチされたボタンがあるとします。これを押すといくつかのアクションがトリガされますが、1秒の遅延で特定のアクションをトリガする必要があります。この1秒の遅れで新しい時間ボタンを押してください。 コード次のようになります、このコードの動作が非常に細かいであるためiPhone:NSTimerでメモリリークの問題がほとんど発生しない
@interface Image : UIView {
NSTimer *timer;
}
...other things...;
@end
@implementation Image
-(IBAction)startStopTimer{
...do something...;
...do something...;
[timer invalidate];
timer = [[NSTimer scheduledTimerWithTimeInterval:0.7
target:self
selector:@selector(delayedAction)
userInfo:nil
repeats:NO] retain];
}
-(void)delayedAction{
...do other things...;
}
@end
:「delaiAvanceは、」ユーザーがボタンをもう一度押すと、少なくとも1つの第2のために待っていない場合にのみトリガされます。
大きな問題は、タイマーが起動するたびにメモリリークが発生することです。
ですから、このNSTimerをどのようにしてリリースしなければならないのですか?
(deallocメソッドで、[タイマー解除]は動作しません。)
こんにちはジョー、アドバイスいただきありがとうございます!それは魅力のように動作します!私はすでにperformSelectorで試してみましたが、私はそれをキャンセルできることを知らなかった!キャンセルの構文でちょっとしたエラーがありました。 "[NSObject cancelPreviousPerformRequestsWithTarget:self selector:@selector(doSomething)object:nil];"再度、感謝します ! – Chrysotribax
おっと、愚かな私!私は他の人のためにそれを上に改めました。ありがとう! – jowie