Différence entre 2 dates en secondes ios

J’ai une application où le contenu est affiché à l’utilisateur. Je souhaite maintenant savoir combien de secondes un utilisateur considère réellement ce contenu. Donc, dans mon fichier d’en-tête, j’ai déclaré un

NSDate *startTime; NSDate *endTime; 

Alors à mon avisWillAppear

  startTime = [NSDate date]; 

Alors à mon avisWillDisappear

 endTime = [NSDate date]; NSTimeInterval secs = [endTime timeIntervalSinceDate:startTime]; NSLog(@"Seconds --------> %f", secs); 

Cependant, l’application se bloque, avec parfois des erreurs différentes. Parfois, c’est une fuite de mémoire, parfois c’est un problème avec NSTimeInterval, et parfois il se bloque après un retour au contenu pour la deuxième fois.

Des idées pour résoudre ce problème?

    puisque vous n’utilisez pas ARC, lorsque vous écrivez

    startTime = [NSDate date];

    vous ne conservez pas startTime , il est donc désalloué avant l’ -viewWillDisappear . Essayer

    startTime = [[NSDate date] retain];

    De plus, je recommande d’utiliser ARC. Il devrait y avoir beaucoup moins d’erreurs avec la gestion de la mémoire qu’avec sans elle

    Vous devez déclarer une propriété avec conserver pour la date de début. Votre date est publiée avant que vous puissiez calculer le décalage horaire.

    Alors déclarez

     @property (nonatomic, retain) NSDate *startDate - (void)viewWillAppear:(BOOL)animated { [super viewWillAppear:animated]; [self setStartDate: [NSDate date]]; } - (void)viewWillDisappear:(BOOL)animated { [super viewWillDisappear:animated]; NSLog(@"Seconds --------> %f",[[NSDate date] timeIntervalSinceDate: self.startDate]); } 

    N’oubliez pas de nettoyer.

     - (void)dealloc { [self.startDate release]; [super dealloc]; }