Почему этот NSTimer падает? - PullRequest
0 голосов
/ 09 февраля 2012

http://www.youtube.com/watch?v=5al6qqRzzQg когда я нажимаю на начало более одного раза ??? что мне нужно будет сделать

#import "FirstViewController.h"

@implementation FirstViewController

-(IBAction)start;{

    myticker = [NSTimer scheduledTimerWithTimeInterval:1.0 target:self selector:@selector(showActivity) userInfo:nil repeats:YES];
}
-(IBAction)stop;{ 

    [myticker invalidate];
}
-(IBAction)reset;{

    time.text = @"0";
}
-(void)showActivity;{ 

    int currentTime = [time.text intValue];
    int newTime = currentTime + 1;
    time.text = [NSString stringWithFormat:@"%d", newTime];
}


- (void)didReceiveMemoryWarning

Ответы [ 2 ]

0 голосов
/ 09 февраля 2012

Измените методы запуска и остановки на это:

-(IBAction)start;{

    [myticker invalidate];
    myticker = [NSTimer scheduledTimerWithTimeInterval:1.0 target:self selector:@selector(showActivity) userInfo:nil repeats:YES];
}

-(IBAction)stop;{ 

    [myticker invalidate];
    myticker = nil;
}

Это остановит его сбой.Кроме того, вы должны добавить это:

-(void)dealloc
{
    [myticker invalidate];
}
0 голосов
/ 09 февраля 2012

добавить переменную bool в заголовок вашего класса, например timerIsActive

-(IBAction)start;{
if (!timerIsActive) {
    myticker = [NSTimer scheduledTimerWithTimeInterval:1.0 target:self selector:@selector(showActivity) userInfo:nil repeats:YES];
  timerIsActive = YES;

}
}

-(IBAction)stop;{ 
    timerIsActive = NO;
    [myticker invalidate];
}
...