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 ?
Soirées pas folles au Japon
les pires choses ont une fin
Quand la justice est sourde
Une autre loi du silence
Apple
Ma première journée là-bas !!!
Kyoto - Visites, photos et généralités
le moral qui remonte !
2 semaines en Malaisie
Mais allez-y pas !
Url propres avec .htaccess / Minimal urls using .htaccess
Un peu d'aide sur .htaccess ça ne se refuse pas ! Who doesn't need a little help with .htaccess :)
Kyoto premières journées
découverte des alentours de la maison à Kyoto
Mon stage au Japon se termine
Youhouhou !
Jongler
Je sais enfin jongler !!
Couchsurfing à Vilnius (Lithuanie)
Voyager encore autrement
Salon de l'auto
Une petite virée au salon de l'Auto 2008
Honteux !
réaction à chaud sur le match France-Irlande
iPhone App
Le succès frappe à ma porte mais se décide à entrer...
Sierra Nevada
road trip encore plus à l'américaine que d'habitude
Un été à Hong Kong
Wan Chai, la ville, les îles
Tokyo Dome
Avec en prime un cadeau vidéo :)
Un printemps à Birmingham
Après la pluie, le beau temps
AppEngine : analyse et conseils techniques
AppEngine, l'outil de la décennie !