Site Perso de

Thomas JANNAUD

Des actualités personnelles sous un style impersonnel, et inversement.



Snippets utiles pour iOS Cocoa - Useful Cocoa snippets
Courts et efficaces / Short and simple. In French and English 19 Février 2009

First part in French, second one in English

pour tirer un nombre au hasard :
srandom([NSDate timeIntervalSinceReferenceDate]);
pour initialiser le générateur (à ne faire qu'une seule fois, au lancement de l'application par exemple) puis
random()
renvoie un entier (pseudo) aléatoire entre 0 et RAND_MAX.

Ainsi,
srandom([NSDate timeIntervalSinceReferenceDate]);
int a = random() % 10
renvoie un entier entre 0 et 9, et double b = (double) (random()) / (double)(RAND_MAX);
renvoie un nombre à virgule entre 0 et 1.

Pour chronométrer
NSDate* debut = [[NSDate date] retain];
pour "lancer" le chrono, et
NSTimeInterval since = [debut timeIntervalSinceNow];
double a = -((double) (since));
pour "l'arrêter".

Remarque : mettre 'debut' comme une variable globale pour pouvoir chronométrer depuis 2 fonctions différentes.

Notez que l'on ne "lance" rien (au contraire de NSRunLoop - addTimer), on fixe simplement une date comme date de référence, et on regarde à un moment donné quel est l'intervalle de temps entre ce moment et cette date de référence. C'est donc un nombre négatif.
Un peu bête comme technique, mais j'ai mis beaucoup de temps à la trouver étant donné que la plupart des méthodes retournent le nombre de secondes écoulées depuis le 1er janvier 1970 (soit un nombre entier de secondes). Pas pratique pour chronométrer des centièmes !


to generate a random number :
srandom([NSDate timeIntervalSinceReferenceDate]);
to initialise the generator (do that just once, e.g at the launch of the program)
random() will return an integer between 0 and RAND_MAX.

For example,
srandom([NSDate timeIntervalSinceReferenceDate]);
int a = random() % 10
will return an integer from 0 to 9, and
double b = (double) (random()) / (double)(RAND_MAX);
will give you a float number between 0 and 1.

To chronometer
NSDate* start = [[NSDate date] retain]; will "start" the chrono, and
NSTimeInterval since = [debut timeIntervalSinceNow];
double a = -((double) (since));
will "stop" it, variable 'a' containing the elapsed time.

Remark : you should write 'start' as a global variable, so as to launch and stop the chronometer from 2 different functions.

Note that nothing is "launched" as with NSRunLoop - addTimer ; here we simply fix a date as a reference and, we eventually look what is the elapsed time since this reference date (which leads to a negative number).
It seems "stupid", but it took me a lot of time to figure it out since most other methods return the number of elapsed seconds since January 1th, 1970 (an integer). Not useful for accurate digits !

Laissez un commentaire !

Pas besoin de vous connecter, commencez à taper votre nom et une case "invité" apparaîtra.

Couleurs
Fonctionnement des couleurs sur un ordinateur, et transformation HLS<->RGB
Fichiers Wav
Format, spécifications et code source C++ générant un .wav
Comment jouer un son en javascript / How to play a sound with javascript
In French and English
Tutoriel Cocoa / Objective-C
Bases pour créer une appli en Cocoa/Obj-C avec interface + astuces et code sources
Mes codes open source
Des dizaines de sources et snippets, pour apprendre ou se perfectionner
Fils RSS
qu'est ce qu'un fil RSS et comment en créer ?
Brosse à dents électrique
Achat d'une brosse à dents électrique. Un bon achat ?
Tutoriel VB6/VBA
Bases pour créer une belle app en VB6/VBA + astuces et codes sources
Sierra Nevada
road trip encore plus à l'américaine que d'habitude
Salon de l'auto
Une petite virée au salon de l'Auto 2008
Emulateurs de jeux Nintendo 64 et de vieux jeux Mac
Retour en enfance
Bye Bye Tokyo
une page se tourne
La rando de la méduse
les alpes et les 7 lacs
Au bureau
Lieu de travail, ...
Kyoto - Visites, photos et généralités
le moral qui remonte !
San Francisco
Visite guidée
Alcatraz
un petit tour sur cette île mythique
la Californie
Aperçu global
Enigme
De quoi vous occuper un bon moment avec un énoncé très simple !
Macron : et maintenant, en marche !
Lendemain d'élection 2017
Couchsurfing à Vilnius (Lithuanie)
Voyager encore autrement
Kyoto premières journées
découverte des alentours de la maison à Kyoto
Yosemite
premier road trip aux US
Tentative de faire du stop
Pour ne pas s'arrêter en si bon chemin