XCode Tips&Tricks #3 – Come creare un piccolo cronometro

Eccoci con un nuovo appuntamento del “XCode Tips&Tricks“.

La richiesta è nata da un utente (di cui non ricordo il nome, se vuole lasciare un commento e dirmi come è finito il suo progetto mi farebbe piacere) che mi chiedeva aiuto per realizzare un semplice cronometro.

La struttura dell’applicazione è molto semplice, è composta da due bottoni: uno per avviare il conteggio del tempo e l’altro per fermarlo:

Schermata 2009-10-16 a 12.43.19

Ovviamente potreste avere un solo pulsante, non cambia nulla!

I due metodi associati alla pressione dei bottoni sono i seguenti:

-(IBAction)avviaTimer{
	self.startDate = [NSDate date];
	NSLog(@"ora di avvio timer:%@",startDate);
}

-(IBAction)fermaTimer{
	double noSeconds = (double) [self.startDate timeIntervalSinceNow] * -1000;
	NSLog(@"sono passati: %f millisecondi",noSeconds);
}

Come potete vedere si tratta in sostanza di due istruzioni. La prima (alla riga 2) istanzia un’oggetto della classe NSDate, che ci restituisce la data e l’ora corrente in cui viene istanziato l’oggetto. L’istruzione alla riga 7, infine, calcola il numero di millisecondi passati dall’avvio del conteggio (potete esprimere tale numero anche in secondi, basterà rimuovere il “* -1000” alla fine dell’istruzione).

Schermata 2009-10-16 a 13.19.26

Spero possa tornare utile a qualcuno questo esempio. Alla prossima!

Ingegnere informatico e sviluppatore freelance, mi occupo da anni di sviluppo per iOS (ma non solo). Dal 2008 scrivo su questo piccolo blog (con qualche lunga pausa), in cui parlo di programmazione e di qualsiasi altra cosa che mi diverta.

10 comments On XCode Tips&Tricks #3 – Come creare un piccolo cronometro

  • Ciao Andrea,
    sono il ragazzo che ti aveva chiesto aiuto per realizzare il cronometro! Ci tenevo davvero a ringraziarti per il tuo aiuto e anche per questa guida! Ultimamente sono stato molto impegnato, però sono riuscito a finire la prima parte del mio progetto, proprio grazie ai tuoi preziosi aiuti. Quello che mi rimane è usare i valori cronometrati per eseguire operazioni algebriche.
    Ti rinnovo i miei complimenti per questo sito e per le migliorie apportate!

  • @Roberto: ti capisco, anche io faccio ingegneria e il tempo libero è davvero poco!!
    poveri noi futuri ingegneri!! XD

    comunque quando avrai finito l’applicazione faccelo sapere! 😉

  • Ciao. Visto che QUI si fanno software, lancio questa idea/richiesta: il cronometro originale dell iphone fa anche da lap counter. Mi servirebbe potergli dare il segnale di LAP tramite un contatto esterno meccanico (comando a pedale). Oppure Ho pensato ad un comando vocale…….. Mi serve perche faccio radiomodellismo e le mani sono impegnate durante la guida.!!! E’ fattibile? Grazie

  • @Marco: ciao! l’idea non è male, bisognerebbe trovare qualcuno disposto a svilupparla..
    sicuramente l’opzione più fattibile sarebbe quella a comando vocale, dovrebbe anche essere la più semplice da realizzare..

    se trovo qualcuno a cui interessa l’idea ti farò sapere! 😉

  • E se volessi far vedere il cronometro nella view? E non solo nella console, grazie in anticipo 😀

  • @Furios: inserisci una label tramite IB e la colleghi con un elemento dichiarato nella classe.. poi ti basterà fare:

    label.text = [NSString stringWithFormat:@”%f”,noSeconds];

    Così dovrebbe funzionare 😉

  • /Cronometro/Classes/CronometroViewController.m:16:0 /Cronometro/Classes/CronometroViewController.m:16: error: request for member ‘startDate’ in something not a structure or union

    ..volevo segnalarvi che il codice mi dà questo errore, mi sfugge qualcosa?

  • @Alberto: hai dichiarato una variabile di tipo NSDate e con il nome di startDate?

  • Continuo ad avere problemi anche dichiarando quella variabile, se lo faccio mi dice di non trovare i metodi! Boh.
    /Cronometro/Classes/CronometroViewController.m:75:0 /Cronometro/Classes/CronometroViewController.m:75: warning: incomplete implementation of class ‘CronometroViewController’
    method definition for ‘-fermaTimer:’ not found
    method definition for ‘-avviaTimer:’ not found

    Se riesci mi posti l’header .h?

  • @Alberto: se riesci mandami il tuo progetto a bubidevs at gmail.com così vedo di cercare l’errore 😉

Leave a Reply to Andrea Busi Cancel Reply

Your email address will not be published.

Site Footer