A quoi sert id<> ???

pourquoi utiliser id ?
c'est un pointeur vers une instance d'une classe selon la doc...
mais par exemple _rssItems est un pointeur vers une instance de la classe NSMutableArray si je me trompe pas. donc quelle est la différence svp?

        NSMutableArray * _rssItems;
id<FluxRSSParserDelegate> _delegate;
NSOperationQueue *_retrieverQueue;

Je vois pas a quoi cela sert

Réponses

  • AliGatorAliGator Membre, Modérateur
    12:53 modifié #2
    id = n'importe quel type d'objet, c'est un type dynamique (au sens où le compilateur ne sait pas la classe dont il s'agit au moment de compiler et ne fais pas de vérification sur ce type)
    <...> = indique que l'objet répond à  un @protocol.

    Donc "id<FluxRSSParserDelegate>" = un objet quelconque, on s'en fiche de sa classe... du moment qu'il se conforme au protocole FluxRSSParserDelegate. Que cet objet soit un UIViewController, un NSObject quelconque, un TotoTrucMuche, c'est pas important, du moment qu'il se conforme au protocole FluxRSSParserDelegate, c'est ça qui est important.

    Après tu pourrais mettre "TotoTrucMuche<FluxRSSParserDelegate>" comme type pour indiquer que _delegate doit être du type TotoTrucMuche en plus de se conformer au protocole FluxRSSParserDelegate... mais en l'occurrence, surtout pour le cas d'usage d'un "delegate", pourquoi mettre une contrainte sur le type alors que conceptuellement ce qui t'intéresse sur ce delegate c'est qu'il réponde aux méthodes du protocole prévu, quelle que soit sa classe et l'organisation de la hiérarchie des classes...
  • iLandesiLandes Membre
    12:53 modifié #3
    Bonjour,

    Je profite du sujet pour poser une petite question :

    Quel est le sens des variables commençant par un _ ?

    Y a-t-il une convention quelconque pour utiliser le _ ?

    Merci
  • CéroceCéroce Membre, Modérateur
    12:53 modifié #4
    Souvent, _ indique une variable d'instance ou une méthode privée. Il n'y a pas de convention à  ce propos, Apple les utilisant mais déconseillant de les utiliser...
    Fais comme tu le sens, mais ne pas l'utiliser a plus de sens pour les variables d'instance qui correspondent à  des propriétés.
  • AliGatorAliGator Membre, Modérateur
    12:53 modifié #5
    Maintenant que les @property ne nécessitent plus la déclaration des ivars associées (Modern Runtime), la question de ce côté ne se pose plus trop ceci dit.

    En théorie, utiliser "_" au début d'un nom d'ivar est réservé par Apple. En pratique beaucoup de monde les utilise pour indiquer des ivars pour les différencier des variables locales.
  • iLandesiLandes Membre
    juin 2011 modifié #6
    merci pour la réponse mais qu'est-ce qu'une ivar ?

    voir ici le sujet dans le forum là  dessus :

    http://pommedev.mediabox.fr/frameworks-communs-objective-c/question-sur-la-facon-de-declarer-une-variable-avec-un-_-devant/?topicseen
Connectez-vous ou Inscrivez-vous pour répondre.