Que signifie (NSString **) ?

B

bluheim

Invité
Tout est dans le titre !
laugh.gif
 
Je vois que tu t'en sors tout seul pratiquement tu as trouvé les réponses de ta premiere question puisque tu bosses avec les dico

mymethod [arg mydico]

mais bon un objective-c converted ca fait du bien
laugh.gif
laugh.gif
 
Oui, en effet, je progress lentement mais sûrement...
wink.gif


Tiens, puisque je t'ai sous la main, j'ai une question pour toi, à propos des pointeur de pointeur.

J'ai une méthode de ce style :

- (int)faitUnTrucAvecUnTableau:(NSMutableArray **)tableau;

Je voudrais donc que ma méthode accepte un tableau en paramètre et soit en mesure de renvoyer ce tableau mis à jour, plus un entier. Est-ce la bonne syntaxe ?


Deuxième question : ma méthode fonctionne, elle met bien à jour le tableau. Mais comment puis-je faire pour qu'il soit possible d'appeler la méthode en ne se souciant pas du tableau - en clair, la lancer comme suit : [objectMachin faitUnTrucAvecUnTableau:nil]

Je sais que c'est possible puisque une bonne partie des méthodes la classe NSFormatter sont en mesure d'accepter des paramètres à nil (cf. méthode scanString:intoString:).

Mais je ne sais pas du tout comment déterminer dans ma méthode si mon tableau est à nil. Dés que je tente de l'accéder, d'une manière ou d'une autre, le programme se plante sur un SIGBUS.



Autrement dit, pour simplifier l'énoncé : comment donc fonctionne la méthode scanString:intoString de NSFormatter ???
laugh.gif
 
Je suis pas sûr d'avoir bien compris (j'ai lu en vitesse).. mais si tu essaies d'invoquer une méthode sur un objet qui vaut nil, alors tu auras très probablement un plantage de ton appli (signal SIGBUS = erreur d'adressage de la mémoire).

Et pour tester si ton objet pointe sur nil, il suffit juste de tester... si ton objet pointe sur nil
laugh.gif

if (!(myObjet == nil)) { ... }
 
A part ça, je ne suis pas sûr que ce soit une très bonne idée de vérifier que l'objet n'est pas à nil pour faire des opérations dessus. Dans le sens, où selon moi, c'est plutôt de la responsabilité de celui qui appèle cette méthode de ne pas envoyer un objet pointant sur nil !

Car en capturant ce problème de pointeur nil, que se passe-t-il ensuite ? ton programme lève une exception ou est-ce qu'il fait simplement rien du tout ? car s'il ne fait rien, c'est pas bon du tout. Le programmeur qui appelle ta méthode en lui passant un pointeur nil, il va croire que la méthode a bien passé et le programme continuera son cours comme si de rien n'était.
 
En fait, l'idée est la suivante : si l'objet qui appelle la méthode est interressé aussi bien par l'entier renvoyé par la méthode que par le tableau contenant les résultats, il lui suffit d'envoyer une instance de tableau valide à la méthode - qui renseignera le tableau en conséquence.

Si au contraire il n'est interressé que par l'entier retourné, il envoie nil à la méthode et basta.


C'est déjà le fonctionnement d'un certain nombre de méthodes standards (cf. NSFormatter à ce sujet)...
smile.gif




Concrétement, ce que fait ma méthode est d'aller rechercher dans une base de données les enregistrements ayant une valeur donnée. Elle renvoie le nombre d'enregistrements trouvés et éventuellement remplit le tableau envoyé en paramètres avec les enregistrement trouvés.

Le programmeur peur très bien ne vouloir savoir que le nombre d'enregistrements renvoyés. Auquel cas, il envoie nil en tant que paramètre du tableau et ne s'encombre pas avec une variable dont il n'a pas l'utilité...
 
Ok, dans ce cas ça se justifie pleinement.