2009-09-14 10 views
0

Je voudrais créer une sorte de minuterie qui prendra du temps entre le déclenchement de différents types de fonctions, mais je n'ai pas de chance jusqu'à présent. J'ai supposé que je devrais utiliser l'objet NSDate et je l'ai fait jusqu'à présent.créer une minuterie lors du déclenchement d'une fonction

J'ai créé plusieurs fonctions

-(void)startTime:(id)sender 
{ 
    starttime = [NSDate date]; 
    **[starttime retain];** 
    NSLog(@"show me the starttime %f", starttime); 
} 

-(void)endTime:(id)sender 
{ 
    endtime = [NSDate date]; 
    **[endtime retain];** 
    NSLog(@"show me the endtime %f", endtime); 
} 

-(void)timeInterval:(id)sender 
{ 
    NSTimeInterval interval = [ starttime timeIntervalSinceDate:endtime]; 
    NSLog(@"let me see the timeinterval between now and then %f", interval); 
} 

Par exemple, lorsque je presse un playbutton qui jouera un film je placerai la fonction starttime

-(void)playMovie:(id)sender 
{ 
[self startTime:(id)sender]; 
[self callMovie]; 
} 

Et quand je presse un StopButton pour le film stopfunction sera appelé ainsi que la fonction timeInterval

-(void)stopMovie:(id)sender 
{ 
[self endTime:(id)sender]; 
[self myMovie]; 

[self timeInterval:(id)sender]; 
} 

Cependant, cela ne semble pas fonctionner. Si j'appuie sur le bouton d'arrêt après 3 secondes je suppose que ma fonction timeInterval donnerait une sortie de 3 secondes. Malheureusement en vain. Que se passe-t-il et que fais-je de mal?

EDIT:

Merci pour les réponses. J'ai fait quelques ajustements dans mes extraits de code.

Cependant, je semble avoir fait une erreur cruciale. Je ne retenais pas endtime et starttime variables et cela semble avoir résolu mon cas.

+0

Il est généralement utile de nous dire quel est le mauvais comportement que vous voyez réellement. – Chuck

Répondre

1

Un programme simple en utilisant votre exemple de synchronisation fonctions et sommeil 3 rendements -3.000087

0

Qu'est-ce qui se passe lorsque vous appuyez sur la StopButton? Si rien ne se passe, vérifiez vos IBOutlets, l'action n'est probablement pas connectée à la méthode.

0
-(IBAction)stopMovie:(id)sender { 
    [self endTime:(id)sender]; 
    [self myMovie]; 
    [self timeInterval:(id)sender]; 
} 

Ne devriez-vous pas appeler endTime au lieu de stopTime?

+0

vrai juste une faute de frappe, je l'ai corrigé. –