Problème target deployment en 3.0

CeetixCeetix Membre
01:12 modifié dans API UIKit #1
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.


65Nc


J'avoue que je suis un peu perdu là , je ne sais pas trop comment faire pour résoudre le bouzin ... ??? :'(

Réponses

  • KubernanKubernan Membre
    01:12 modifié #2
    Bonjour,

    La réponse à  ton interrogation se trouve dans le doc de XMLParserDelegate Protocol Reference. Tout au début.

    K.
  • AliGatorAliGator Membre, Modérateur
    01:12 modifié #3
    Oui c'est normal vu que :
    - 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.
  • CeetixCeetix Membre
    01:12 modifié #4
    Merci Ali, j'ai pris la deuxième solution et ça à  l'air de marcher.
    Moi je pensais qu'en mettant le target deployment à  3.0 le compilateur ré-interprêtait tout.
Connectez-vous ou Inscrivez-vous pour répondre.