NSArray

macvelottemacvelotte Membre
12:37 modifié dans API AppKit #1
Bonsoir à  tous !

Je consulte "Help" dans XCode : je ne trouve plus de référence à  NS Array (sur XCode 2.0, mais j'ai la dernière doc Apple ); Où est l'os ???

Réponses

  • aranaudaranaud Membre
    12:37 modifié #2
    Il n'y a que avec NSArray ?
    Pas de mise à  jours récente (Xcode, l'aide de Xcode) ?
    Peut-être les autorisations.
  • macvelottemacvelotte Membre
    12:37 modifié #3
    Il faut que j'ouvre les yeux ...Il suffisait de regarder le détail de Objective-C !

    Mais, autre question (est-ce la place idi ?) :
    - comment écrire la division entière ? Je veux le quotien entier de dividende divisé par diviseur :
    quotient=dividende/diviseur est refusé par le compilteur.

    de même pour le reste :
    reste=dividende mod diviseur n'est pas reconnu ? >:(
  • aranaudaranaud Membre
    12:37 modifié #4
    dans 1137173345:

    de même pour le reste :
    reste=dividende mod diviseur n'est pas reconnu ? >:(

    reste = fmod(A, B);
    
  • wiskywisky Membre
    12:37 modifié #5
    Ca marche ça? non?

    reste = A % B
    

  • CéroceCéroce Membre, Modérateur
    12:37 modifié #6
    L'opérateur modulo ne marche que sur les entiers, il me semble...
  • aranaudaranaud Membre
    12:37 modifié #7
    dans 1137413355:

    L'opérateur modulo ne marche que sur les entiers, il me semble...

    Il fonctionne sur des :
    unsigned int
  • macvelottemacvelotte Membre
    12:37 modifié #8
    dans 1137484107:

    dans 1137413355:

    L'opérateur modulo ne marche que sur les entiers, il me semble...

    Il fonctionne sur des :
    unsigned int


    oui, bien sûr ! ce problème est résolu ...

    Mais j'ai l'instruction suivante qui bloque ... :
    a=[[NSNumber alloc] initWithInt:elemtab];<br />		[tab replaceObjectAtIndex:i withObject:a];
    

    Un NSMutableArray contient des nombres (NSNumber) sous forme d'entiers (int). Je veux remplacer un élément du tableau par une valeur différente : qu'est-ce qui fait que mon code ne marche pas ? :-\\
  • AntilogAntilog Membre
    12:37 modifié #9
    Tu as bien:
    NSNumber * a
    NSMutableArray * tab
    unsigned int i
    ????

    i est bien >= 0 et < à  la capacité de tab???

    Quelle est l'erreur??
  • AliGatorAliGator Membre, Modérateur
    janvier 2006 modifié #10
    1) Vérifie la valeur de "a" :
    - déjà , je ne sais pas ce qu'est elemtab, j'espère que c'est une variable de type "int", hein, bien sûr. [grilled]
    - Et puis un petit [tt]NSLog(@a = %@",a);[/tt] te permettrait de vérifier qu'il n'est pas nil, et que la conversion int->NSNumber s'est bien faite. (normalement y'a pas de soucis... du moment que elemtab est du bon type et avec une valeur acceptable :P

    2) Quel est le problème en fait ? Qu'est ce qui te fait dire que ça ne marche pas ? Un message d'erreur au runtime ? à  la compilation ? aucun message mais pas le résultat attendu ?

    3) Combien vaut i (c'est bien un int, au fait ?) ? S'il dépasse ou même est égal à  [tab count], alors forcément ça va poser problème, aussi. Et s'il est négatif aussi bien sûr.[grilled]

    4) Il faudra que tu penses à  releaser la variable "a" après l'avoir insérée dans ton tableau tab par [tt]replaceObjectAtIndex:withObject:[/tt] (car comme tu le sais sans doute, rajouter un objet dans un conteneur comme NSArray, NSDictionary, etc, fait que le conteneur se charge de "retain" l'objet, puisqu'il l'utilise, et de faire un "release" lorsqu'il ne l'utilisera plus, par exemple si tu "removeObjectAtIndex:" ou que tu "replaceObjectAtIndex:withObject:". Donc toi de ton côté tu dois te charger d'envoyer un release à  ta variable a que tu as alloc/init.)

    5) Il faudrait peut-être séparer un peu les questions là  : y'a un bout qui parle de NSArray, l'autre de modulo... enfin bon.
  • AntilogAntilog Membre
    12:37 modifié #11
    Ca y est!
    J'ai grillé le croco!!!  <3
  • macvelottemacvelotte Membre
    12:37 modifié #12
    O.K, la gestion des NSArray, ça marche !

    Une dernière question : l'index peut-il être unsigned long ?
Connectez-vous ou Inscrivez-vous pour répondre.