J'essaie d'exécuter le code ci-dessous, mais il continue à verrouiller mon simulateur après que le "Tick" est écrit sur la console. Il ne sort jamais "Tock" donc je pense qu'il doit faire avec la ligne "NSTimeInterval elapsedTime = [startTime timeIntervalSinceNow];" Les IBactions sont activées par des boutons. timer et startTime sont définis dans le .h comme NSTimer et NSDate respectivement. Est-ce que quelqu'un peut me dire ce que je fais mal?NSTimer Troubles
code:
- (IBAction)startStopwatch:(id)sender
{
startTime = [NSDate date];
NSLog(@"%@", startTime);
timer = [NSTimer scheduledTimerWithTimeInterval:1 //0.02
target:self
selector:@selector(tick:)
userInfo:nil
repeats:YES];
}
- (IBAction)stopStopwatch:(id)sender
{
[timer invalidate];
timer = nil;
}
- (void)tick:(NSTimer *)theTimer
{
NSLog(@"Tick!");
NSTimeInterval elapsedTime = [startTime timeIntervalSinceNow];
NSLog(@"Tock!");
NSLog(@"Delta: %d", elapsedTime);
}
je suit dans le .h:
@interface MainViewController : UIViewController <FlipsideViewControllerDelegate> {
NSTimer *timer;
NSDate *startTime;
}
- (IBAction)startStopwatch:(id)sender;
- (IBAction)stopStopwatch:(id)sender;
- (void)tick:(NSTimer *)theTimer;
@property(nonatomic, retain) NSTimer *timer;
@property(nonatomic, retain) NSDate *startTime;
@end
Je mis à jour le poste avec mon code .h. Le "nonatomic, retenez" ne devrait-il pas s'occuper du problème de conservation? Est-ce qu'il agit différemment de votre méthode? – SonnyBurnette
Ça devrait être, je ne connais pas trop @properties, mais d'après ce que j'ai pu comprendre, ça devrait l'être. Cependant, dans mes tests, ce n'est pas le cas. Je pense que c'est parce que faire "startTime = [date NSDate];" est en train d'accéder directement à l'objet, sans passer par la propriété setter qui est en train d'être synthétisée (aussi, vous appelez @synthesize, non?). Ma méthode fonctionne cependant: -D – ACBurk
Elle n'accède pas à l'objet, elle affecte directement l'objet à la variable d'instance. C'est là que réside le problème. vous ne traversez pas la propriété. –