2 questions : cible-action et copie dans tableau

Paul_pPaul_p Membre
juin 2011 modifié dans Objective-C, Swift, C, C++ #1
Salut,

j'aurais aimé vous demander 2 trucs :

- comment lire ce code?
j'appelle une méthode comme ça :
NSArray *tableauMelange = [tableau tableauMelange];


et la méthode :
@implementation NSArray(Melange)<br />-(NSArray*) tableauMelange<br />{<br />NSMutableArray *tableau = [NSMutableArray arrayWithCapacity:[self count]];<br />NSMutableArray *copie = [self mutableCopy];<br />while ([copie count] &gt; 0)<br />{<br />int index = arc4random() % [copie count];<br />id objetADeplacer = [copie objectAtIndex: index];<br />[tableau addObject: objetADeplacer];<br />...


sauf que arrayWithCapacity ne résèrve que de l'espace non? quand a-t-on copié les "objets" de "tableau" (1er ligne de code) à  l'intérieur du mutableArray : self count dans le arrayWithCapacity ferait également la copie des objets?




Sinon, j'ai aussi ce code :

//Cible-Action<br />UIButton *reponse = [(VueQCM*)self.view reponse1];<br />[reponse addTarget: self<br />action:@selector(actionReponse:)<br />forControlEvents: UIControlEventTouchUpInside];


et la méthode :
-(void) actionReponse: (id) emetteur {<br />//emetteur est le bouton<br />[modeleQCM verifieReponsse: [emetteur currentTitle]];


j'imagine que reponse1 est l'emetteur, donc l'argument de actinoReponse, mais comment l'a-t-on précisé dans le code cible-action?

Merci ;)

Réponses

  • AliGatorAliGator Membre, Modérateur
    03:42 modifié #2
    Tu as deux tableaux :
    - Un tableau vide "tableau" alloué avec arrayWithCapacity, donc oui ça ne réserve que de l'espace mais au début il n'y a rien dedans
    - Un tableau "copie" qui est une copie conforme de self (= le tableau sur lequel tu appelles ta méthode)

    Après je sais pas comment le reste du code remplit "tableau" pour qu'il serve à  qqch plutôt que d'être vide vu que tu ne nous as pas mis ledit code, par contre il récupère bien l'objet de [copie objectAtIndex:...] donc il va chercher l'objet dans le tableau "copie" qui lui est rempli par le fait que c'est une copie de l'original.
  • Paul_pPaul_p Membre
    03:42 modifié #3
    Salut, c'est ça justement, comment les objets sont-ils copiés? tout le code de la fonction est là , j'ai édité avec 2 lignes pour qu'on se rende mieux compte... sinon, d'ordre général, comment on copierai le tableau et son contenu? on passe un argument à  la fonction? sinon il y a un autre moyen ici, étant donné que c'est une catégorie?

    pour ma 2e question, quelqu'un a une idée?

    Merci ;)
  • AliGatorAliGator Membre, Modérateur
    03:42 modifié #4
    Je comprend pas la question, qu'est ce qui te pose problème ? Le code est pourtant très simple.

    - Tu crées un NSArray "tableau" (dimensionné comme il faut mais vide)
    - Tu crées une copie du tableau d'origine avec "copie = [self mutableCopy]"
    Ensuite :
    - Tu récupères un objet au hasard dans le tableau "copie", et tu l'ajoutes à  "tableau".
    - Tu as à  tous les coups bien oublié de copier tout le code comme je le mentionnais au dessus, qui doit supprimer l'élément en question du tableau "copie". Car en gros le principe c'est de retirer un objet au hasard du tableau "copie" pour le mettre dans "tableau", donc bon.

    Et tu fais ça tant qu'il y a des objets dans ton tableau "copie", donc jusqu'à  ce que tu les aies tous enlevés.
  • Paul_pPaul_p Membre
    juin 2011 modifié #5
    ah oui, en effet... je ne sais pas ce qui me bloquait.

    sinon, je ne trouve pas l'explication pour ma 2e question, aurais-tu une idée?

    edit : j'aurais un autre petit truc à  te demander : comment mettre l'appli sur l'ipod ou iphone, une fois que le projet est fini?

    Merci ;)
  • muqaddarmuqaddar Administrateur
    03:42 modifié #6
    Ton premier code est logique dans la section commune.
    Le deuxième fait partie des API iOS.

    Merci de bien scinder vos messages sinon on ne va rien comprendre.
  • Paul_pPaul_p Membre
    03:42 modifié #7
    Ok merci j'avais pas fait gaffe je vais relancer ma question dans l'autre forum
Connectez-vous ou Inscrivez-vous pour répondre.