Lorsque j'appuie sur le bouton d'arrêt pour arrêter la minuterie, l'appareil revient à l'heure d'origine et recommence le compte à rebours. J'ai regardé partout et tout ce que j'ai trouvé est "invalide" et ça ne marche pas. Je veux que l'heure s'arrête quand j'appuie sur stop et que l'étiquette affiche l'heure d'origine. J'ai aussi désactivé le comptage automatique pour que je puisse essayer de libérer et il me donne une erreur:Comment arrêter un NSTimer
0x10e20a5: movl 16(%edx), %edx EXC_BAD_ACCESS (code=2, address=0x10)
NSTimer *rockettTimer;
int rocketCount;
@interface FirstViewController()
@property (strong, nonatomic) IBOutlet UILabel *rocketTimer;
- (IBAction)stopButton:(id)sender;
- (IBAction)startButton:(id)sender;
@end
@implementation FirstViewController
@synthesize rocketTimer;
-(void) rocketTimerRun{
rocketCount = rocketCount - 1;
int minuts = rocketCount/60;
int seconds = rocketCount - (minuts * 60);
NSString *timerOutput = [NSString stringWithFormat:@"%d:%.2d", minuts, seconds];
rocketTimer.text = timerOutput;
}
- (IBAction)startButton:(id)sender {
rocketCount = 180;
rockettTimer = [NSTimer scheduledTimerWithTimeInterval:1.0 target:self selector:@selector(rocketTimerRun) userInfo:nil repeats:YES];
- (IBAction)stopButton:(id)sender {
[rockettTimer invalidate];
//[rockettTimer release];
}
- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
}
- (void)viewDidUnload
{
[self setRocketTimer:nil];
[super viewDidUnload];
// Release any retained subviews of the main view.
}
- (BOOL)shouldAutorotateToInterfaceOrientation: (UIInterfaceOrientation)interfaceOrientation
{
if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPhone) {
return (interfaceOrientation != UIInterfaceOrientationPortraitUpsideDown);
} else {
return YES;
}
}
@end
Etes-vous sûr que votre stopButton est connecté à stopButton et non startButton par erreur? Notez également qu'invalider libère le temporisateur, donc n'appelez pas release et invalidez. – rmaddy
Vous pourriez vouloir regarder votre code plus près, rien n'empêche l'utilisateur d'appuyer plus d'une fois sur start et de créer plusieurs temporisations que vous continuerez ensuite à faire ... d'où le BAD_ACCESS –