@property et @synthesize

devulderdevulder Membre
08:27 modifié dans API AppKit #1
Bonjour,

Est ce possible de les utiliser avec des tableaux ?

Exemple :

@property (retain) NSString *demo[10];

Merci

Réponses

  • AliGatorAliGator Membre, Modérateur
    08:27 modifié #2
    J'en doute : une @property n'est pas grand chose d'autre (enfin si y'a les attributs retain & co mais bon) que la déclaration d'un setter et d'un getter.

    Ainsi quand on écrit :
    @property NSString* toto;
    
    Cela revient, en somme, à  déclarer un setter et un getter ainsi :
    -(void)setToto:(NSString*)newValue;<br />-(NSString*)toto;
    
    .
    Là  dans ton cas je ne pense pas (à  essayer, j'ai jamais testé mais je doute de la possibilité quand même) qu'il y ait un setter approprié qui pourrait correspondre... Ou alors ça serait un setter vers le "NSString**" (le pointeur vers le NSString*), mais tu perds alors la notion de tableau pour revenir à  la notion plus basique de pointeur (les tableaux C n'étant rien d'autre que des pointeurs vers le premier élément du tableau, mais quand même) :
    -(NSString*&#91;])toto;<br />-(void)setToto:(NSString*&#91;])newArrayOfStrings;
    
    Mais du coup même si jamais ça ça marchait, faut avoir conscience que ton setter et ton getter te retourneraient un table (un NSString*[]), et pas une NSString donnée dans le tableau. En particulier si tu veux utiliser le setter faudra lui filer un nouveau tableau complet, le setter ne te permettra pas de modifier une donnée dans le tableau. D'ailleurs utiliser des tableaux C ne permet pas non plus de garantir que ton tableau ne sera pas modifié...

    Bref, la syntaxe est pas top, et puis je vois pas trop ce que tu peux attendre du fait de déclarer cela en @property à  l'usage... donc autant préférer des setters/getter dédiés, genre [tt]-(NSString*)totoAtIndex:(NSInteger)idx;[/tt] et [tt]-(void)setToto:(NSString*)newString atIndex:(NSInteger)idx[/tt] qui seront bien plus utiles.
  • cyranocyrano Membre
    08:27 modifié #3
    mmmm,

    peut etre preferer un NSMutableArray de NSString ? ca resoud pas mal de probleme?
  • devulderdevulder Membre
    janvier 2011 modifié #4
    dans 1294670794:
    Bref, la syntaxe est pas top, et puis je vois pas trop ce que tu peux attendre du fait de déclarer cela en @property à  l'usage... donc autant préférer des setters/getter dédiés, genre [tt]-(NSString*)totoAtIndex:(NSInteger)idx;[/tt] et [tt]-(void)setToto:(NSString*)newString atIndex:(NSInteger)idx[/tt] qui seront bien plus utiles.


    Je vais faire ca, c'est le plus simple.

    Merci a tous.

  • HerveHerve Membre
    08:27 modifié #5
    Dis nous si ça marche : la question est intéressante (à  vrai dire, j'essaierai à  l'occasion).
  • HerveHerve Membre
    08:27 modifié #6
    Pour avoir essayé, cela marche avec tout ce qui est NS, NSString ou NSArray et ses dérivés.
Connectez-vous ou Inscrivez-vous pour répondre.