Annotation en objective-C ?

Salut,

Je cherche des pistes pour réaliser un framework de génération de code,
connaissez-vous un moyen de faire en Objective-C l'équivalent des annotations, comme en Java par exemple?

Typiquement je voudrais pouvoir mettre sur une property quelque chose comme:

@interface Person : NSObject {

    @Mandatory
    NSString* firstName;

    @NotMandatory
    NSString* lastName;
}

@end

Merci,
Vincent

Réponses

  • AliGatorAliGator Membre, Modérateur
    22:55 modifié #2
    Avec des commentaires à  la syntaxe spécifique (genre comme doxygen) ?
  • sekaijinsekaijin Membre
    22:55 modifié #3
    oui c'est une pratique courante

    par exemple on définit une classe et on annote certaines propriétés et méthodes qui sont alors automatiquement exposé dans un service.

    pas besoin de définir une classe ou une interface spécifique ni de mettre d'un côté les éléments qui sont exposé et de l'autre se qui ne le sont pas.

    je n'ai pas vu ça en objective C mais les préprocesseurs peuvent très bien je pense faire ça.

    A+JYT
  • AliGatorAliGator Membre, Modérateur
    22:55 modifié #4
    En Objective-C on fait aussi parfois ça, comme dans d'autres langages, avec des macros.
    Macros qui peuvent même ainsi être mappées à  des directives particulières (pragma, [tt]__attribute__[/tt], etc) si le compilateur les prend en compte.

    Par exemple tu pourras trouver des macros comme [tt]NS_REQUIRES_NIL_TERMINATION[/tt] derrière une déclaration de méthode à  nombre variable d'argument, qui dans le cas où le compilateur est gcc, est définie comme étant la directive [tt]__attribute((sentinel(0,1)))[/tt] (permettant alors au compilateur de savoir que pour cette fonction à  nombre variable d'argument, le dernier argument doit toujours être nil pour terminer la liste et si ce n'est pas le cas le compilo mettra un warning) alors que dans le cas de Win32 ou d'un autre compilateur est définie à  ... rien (texte vide) ce qui fait comme si la macro n'était même pas présente (car le compilateur ne gère pas cette directive __attribute__ donc n'est pas capable de gérer de telles vérifications).
  • colionelcolionel Membre
    22:55 modifié #5
    Effectivement des commentaires serait surement le plus simple si je parse les classe ! (via ligne de commande par exemple)
    Je ne connaissais pas les macros je vais me renseigner là  dessus.

    Par contre je me demande si il serait possible de faire un framework qui interpréterait ces informations au runtime, je suis entrain de regarder le runtime programming guide, je reviendrais surement poser des questions ici ;)

    Merci pour vos réponses !
Connectez-vous ou Inscrivez-vous pour répondre.