2010-10-27 16 views
0

Je suis en train de trouver la différence entre deux NSDates. Cela a fonctionné une fois et a imprimé la différence, mais n'a jamais travaillé à nouveau. Je ne me souviens pas d'avoir changé quoi que ce soit après le moment où ça a marché. Des idées? Oh, et il n'y a pas d'erreur, et si je commente cet extrait, tout fonctionne.iPhone timeIntervalSinceDate erreur de lancement, ou de travail

//----------- Touches Begin 
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event { 
    touchBegins = [NSDate date]; 
    NSLog (@"  Tap: %d ", tapTotal); 
    NSLog (@"<=========================>"); 
    NSLog (@"Method: touchesBegines & Ends"); 
    NSLog (@" Touch Begin: %@", touchBegins); 
    // [self updateLabelsFromTouches:touches]; 
} 


//----------- Touches End 
- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event { 
    touchEnds = [NSDate date]; 
    NSLog (@" Touch Ends : %@", touchEnds); 
    @try { 
     NSLog(@"%@", touchEnds); 
     NSTimeInterval elapsed = [touchEnds timeIntervalSinceDate:touchBegins]; 
    NSLog (@" Finger Down: %f", elapsed); 
    } @catch (NSException *ex) {} 

    NSLog (@" "); 

    [self updateLabelsFromTouches:touches]; 
} 

Console:

[Session started at 2010-10-27 10:27:18 -0400.] 
     Tap: 0 
<=========================> 
Method: touchesBegines & Ends 
Touch Begin: 2010-10-27 14:27:22 GMT 
Touch Ends : 2010-10-27 14:27:22 GMT 

Répondre

1

EDIT: En regardant le code supplémentaire que vous avez ajouté, vous n'êtes pas retenue touchBegins. Essayez ceci:

[[NSDate date] retain]; 

Je suis surpris qu'il n'est pas seulement écraser lorsque vous appelez timeIntervalSinceDate :) - en fait, il est mais vous attraper l'exception et ignorant!

Vous devez ajouter un enregistrement d'exception dans votre @catch; tout cela devrait le faire:

} @catch (NSException *ex) { 
    NSLog(@"Exception getting time interval : %@", ex); 
} 

Vous pouvez voir un message de journal qui dit quelque chose comme « sélecteur non reconnu » - vous allez certainement voir je parie que quelque chose d'intéressant!


Jetez un oeil à ceci: http://www.cplusplus.com/reference/clibrary/cstdio/printf/

% d est un entier - essayez% f :)

+0

Merci, je vais vérifier le lien. % f n'a pas semblé aider, mais c'est un pas dans la bonne direction :) – rd42

+0

Êtes-vous sûr à 100% que TouchEnds n'est pas nul? Essayez d'ajouter 'NSLog (@"% @ ", touchEnds);' là aussi – deanWombourne

+0

ouais, ce n'est pas nul, il est réglé à quelques lignes au dessus. J'ai ajouté plus de code et une console lue ci-dessus sur la question. Merci de votre aide. – rd42