Archive pour la catégorie ‘Obj-c’

Du bon usage de NSLog

Dimanche 29 juillet 2007

NSLog et printf sont très utilisés. Cependant ils peuvent être source d’une faille pouvant planter votre application. Voici ce qu’il ne faut jamais faire:

NSLog(str);

A la place, faites plutôt ceci:

NSLog(@"%@", str);

Pourquoi ? Parce que si, par exemple, str=@ »abcd %n 123 %@ » alors NSLog voudra chercher des arguments pour remplir les « % ». Mais il n’y en a pas, d’où le plantage. Même Apple s’est faite avoir.

NSInvocation, puissance méconnue

Vendredi 27 juillet 2007

Pour ce premier article, j’ai décidé de vous parler d’une classe trop peu utilisée, elle offre pourtant une flexibilité insoupçonnée.
Vous avez certainement déjà créé une méthode du type

-(void)setTarget:(id)target didEndSelector:(SEL)selector object:(id)obj

qui sera appelée à la fin d’un travail. Oui mais, il faut mémoriser le target, selector et retenir le « obj ». En plus, si on veut passer plus de deux paramètres à notre sélecteur ou si un des paramètre n’est pas un objet (un int, NSRect,…) on est bien bloqués (et qu’on vienne pas me parler d’utiliser objc_msgsend. Beurk).
Ça, c’était sans compter avec NSInvocation.
(Lire la suite…)