Problème target deployment en 3.0
Bonsoir tout le monde.
Bon j'ai quelques soucis avec mon application quand je la run en 3.0 (enfin inférieur à iOS 4).
J'ai downgrader pour voir un peu ce qui se passe et il n'aime pas NSXMLParserDelegate.
J'avoue que je suis un peu perdu là , je ne sais pas trop comment faire pour résoudre le bouzin ... ???
Bon j'ai quelques soucis avec mon application quand je la run en 3.0 (enfin inférieur à iOS 4).
J'ai downgrader pour voir un peu ce qui se passe et il n'aime pas NSXMLParserDelegate.
J'avoue que je suis un peu perdu là , je ne sais pas trop comment faire pour résoudre le bouzin ... ???
Connectez-vous ou Inscrivez-vous pour répondre.
Réponses
La réponse à ton interrogation se trouve dans le doc de XMLParserDelegate Protocol Reference. Tout au début.
K.
- avant iOS4 NSXMLParserDelegate était une protocole informel (en gros une catégorie de NSObject, qui ne déclare les méthodes de delegate que de façon informelle, c'est historique ça vient de l'époque où les protocoles formels ne permettaient pas autant de choses que maintenant)
- alors que depuis iOS4 ils ont formalisé ça en un protocole formel, que du coup tu dois déclarer en effet entre "<...>" dans ton @interface de ta classe.
La solution si tu veux que ce soit compatible à la fois iOS3 et iOS4, du coup, dépend de si tu veux résoudre le problème la compilation ou au runtime.
1) Si tu veux résoudre le problème à la compilation, tu peux mettre des #ifdef en utilisant les macros de TargetConditionals.h (voir la doc sur la gestion de compatibilité). Mais dans ton cas vu que du coup ça modifie la déclaration de ta classe ça implique que tu fasses deux compilation (une pour iOS3 et une iOS4) c'est un peu dommage pour le coup
2) Sinon tu peux ne pas indiquer du tout que ta classe se conforme au protocole <NSXMLParserDelegate>. Du coup si tu compiles en iOS4, tu vas avoir un warning genre "TaClasse may not conforms to protocol machin" mais c'est un warning que tu peux ignorer pour le coup (du moment que tu implémentes bien toutes les méthodes quand même et l'ignore donc en connaissance de cause), et sous iOS3 tu n'auras pas le warning du coup.
Moi je pensais qu'en mettant le target deployment à 3.0 le compilateur ré-interprêtait tout.