ストップウォッチアプリを開発しています。私のアプリケーションでは、2 つの UIButtons と がStartBtn
ありStopBtn
、また も使用しますNSTimer
。
今、私はNSTimer
ユーザーがクリックしたときに開始しStartBtn
、クリックしたときに停止したいと考えていますStopBtn
。
NSTimer
メソッドによって停止されることはわかっていますが、再開する[MyTimerName invalidate];
方法がわかりません。NSTimer
ストップウォッチアプリを開発しています。私のアプリケーションでは、2 つの UIButtons と がStartBtn
ありStopBtn
、また も使用しますNSTimer
。
今、私はNSTimer
ユーザーがクリックしたときに開始しStartBtn
、クリックしたときに停止したいと考えていますStopBtn
。
NSTimer
メソッドによって停止されることはわかっていますが、再開する[MyTimerName invalidate];
方法がわかりません。NSTimer
このNSTimer
クラスは少し使いにくいです。作成/破壊を開始/停止から分離するのではなく、すべて一緒にロールバックします。つまり、タイマーは作成されるとすぐに開始され、破棄されるとすぐに停止します。
したがって、オブジェクトが実行中であるかどうかを示すフラグとして、オブジェクトの存在を使用する必要があります。NSTimer
このようなもの:
// Private Methods
@interface MyClass ()
{
NSTimer *_timer;
}
- (void)_timerFired:(NSTimer *)timer;
@end
@implementation MyClass
- (IBAction)startTimer:(id)sender {
if (!_timer) {
_timer = [NSTimer scheduledTimerWithTimeInterval:1.0f
target:self
selector:@selector(_timerFired:)
userInfo:nil
repeats:YES];
}
}
- (IBAction)stopTimer:(id)sender {
if ([_timer isValid]) {
[_timer invalidate];
}
_timer = nil;
}
- (void)_timerFired:(NSTimer *)timer {
NSLog(@"ping");
}
タイマーを開始するには
#define kRefreshTimeInSeconds 1
NSTimer *myTimerName;
.
.
myTimerName = [NSTimer scheduledTimerWithTimeInterval: kRefreshTimeInSeconds
target:self
selector:@selector(handleTimer:)
userInfo:nil
repeats:YES];
次にデリゲート関数:
-(void)handleTimer: (id) sender
{
//Update Values in Label here
}
タイマーを停止するには
-(void)stopTimer: (id) sender
{
if(myTimerName)
{
[myTimerName invalidate];
myTimerName = nil;
}
}