Obj-c 2

JekarJekar Membre
20:54 modifié dans API AppKit #1
Je debute en Obj-c :)
j ai un Nstextfield txt1, et je fais ca :

[txt1 setStringValue:@"toto"] ;


En obj-c 2 ca donne quoi?

Merci

Réponses

  • Philippe49Philippe49 Membre
    20:54 modifié #2
    dans 1196195557:

    Je debute en Obj-c :)
    j ai un Nstextfield txt1, et je fais ca :

    [txt1 setStringValue:@"toto"] ;
    


    En obj-c 2 ca donne quoi?

    Merci


    NSTextFied hérite de NSControl qui implémente setStringValue:


    <3 <3 Ma réponse est "titi" , Jean-Pierre  :adios!: :adios!: :kicking: :kicking:<br />

    Qu'est-ce qu'on gagne ? Y a un piège ?
  • Philippe49Philippe49 Membre
    20:54 modifié #3
    Bon sérieusement, ça doit écrire toto dans ton text field si la connexion dans IB a été bien faite.

    Et bienvenu sur Objective-Cocoa  :p :p
  • schlumschlum Membre
    20:54 modifié #4
    dans 1196195557:

    Je debute en Obj-c :)
    j ai un Nstextfield txt1, et je fais ca :

    [txt1 setStringValue:@&quot;toto&quot;] ;
    


    En obj-c 2 ca donne quoi?

    Merci


    Ben... La même chose qu'en obj-c 1  :P
  • JekarJekar Membre
    20:54 modifié #5
    bon, pourquoi cette ligne ne fonctionne pas ?
    txt1.setStringValue=@&quot;toto&quot; ;
    


    alors que

    txt1.stringValue=@&quot;toto&quot; ;
    


    fonctionne tres bien et me met bien le texte toto dans mon Nstextfield...
    Alors qd regardant la doc c est bien marque que stringValue sert a recuperer la valeur et pas a la modifier...



  • psychoh13psychoh13 Mothership Developer Membre
    20:54 modifié #6
    Bah disons que le nom de la propriété correspond au nom de la variable d'instance, et il n'y a qu'une propriété pour deux méthodes différentes : récupération et affectation.

    Le "set" qu'on place devant le nom de la variable d'instance lorsqu'on fait un modificateur est un standard, donc lorsque tu fais un

    field.stringValue = @&quot;toto&quot;;
    


    Le compilateur va en fait chercher la méthode portant le nom setStringValue pour faire l'affectation, alors que si tu mets : setStringValue, il cherchera setSetStringValue pour respecter le standard...

    Le principe des propriétés c'est aussi l'économie des noms, il serait idiot de définir une propriété portant le nom stringValue pour la récupération et une portant le nom setStringValue pour la modification...
  • LeChatNoirLeChatNoir Membre, Modérateur
    20:54 modifié #7
    Slt,
    Pour compléter, comme setStringValue est une méthode, il faudrait écrire "à  l'ancienne" :
    [txt1 setStringValue:@toto];

    A+
  • psychoh13psychoh13 Mothership Developer Membre
    novembre 2007 modifié #8
    L'Objective-C 2.0 permet l'utilisation des méthodes "à  l'ancienne" comme des propriétés, donc utiliser la nouvelle écriture ne pose pas de problèmes :

    txt1.stringValue = @&quot;toto&quot;;
    


    PS : les propriétés sont aussi des méthodes.
    De plus pour toute propriété déclarée, il existe les méthodes "à  l'ancienne" correspondante, exemple :
    CABasicAnimation *anim = [[[CABasicAnimation alloc] init] autorelease];<br />[anim setFromValue:value];
    


    Alors que seule la propriété fromValue est définie.
  • schlumschlum Membre
    20:54 modifié #9
    C'est quand même une belle connerie cette histoire de propriétés...

    Maintenant, quand on va relire un code, il faudra constamment se demander si on travaille sur un objet ou sur une structure.  ::)
  • Philippe49Philippe49 Membre
    20:54 modifié #10
    dans 1196244486:

    C'est quand même une belle connerie cette histoire de propriétés...


    Oui, autant la dot-syntax paraà®t fructueuse pour les bindings ou KVC, (forKeyPath par exemple) , autant j'attends de rencontrer des situations intéressantes dans du code standard.
  • psychoh13psychoh13 Mothership Developer Membre
    20:54 modifié #11
    La syntaxe par point remplace les méthode "forKey:" ? ???
  • schlumschlum Membre
    20:54 modifié #12
    D'après ce que j'ai lu ici, la notation "." n'est pas protégée de manière à  ne pouvoir être utilisée que pour les propriétés.
    Donc on peut faire un peu tout et n'importe quoi.

    Vous confirmez ?  ???

    (je n'utilise pas encore Xcode 3 et Leopard, trop jeunes pour du dev industriel).
  • Philippe49Philippe49 Membre
    novembre 2007 modifié #13
    dans 1196248389:

    La syntaxe par point remplace les méthode "forKey:" ? ???

    Je parle de l'utilisation du point dans l'utilisation de valueForKeyPath:

    exemple :
    [dico valueForKeyPath:@maCave.@sum.number"] )

Connectez-vous ou Inscrivez-vous pour répondre.