compatibilité et validation sur l'AppStore
denis_13
Membre
Bonjour,
pour publier une application compatible 2.2.1, Apple recommande de l'avoir compilé préalablement en 3.0 afin de faire sortir les warnings et éliminer les fonctions qui sont marquées obsolètes en 3.0.
Parmi ces fonctions, il y en a qui ne posent pas de problèmes, comme éliminer les setText sur des cellules, mais d'autres sont plus compliquées. Par exemple l'initialisation d'une cellule, j'ai utilisé #ifdef --IPONE_3_0 pour installer les deux codes (3.0 et 2.2.1), mais comme c'est de la compilation conditionnelle, cela ne doit pas beaucoup se voir dans l'exécutable que l'on livre... (donc j'imagine qu'ils sont obligés de le tolérer, puisque l'on doit compiler avec le SDK2.2.1.).
Mais ce qui me gène un peu plus c'est la capture d'image, on peu recourir à la même stratégie, mais cela pose quelques problèmes, dans le frameworks 3.0, le callback
- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingImage:(UIImage *)image editingInfo:(NSDictionary *)editingInfo
par
- (void)imagePickerController:(UIImagePickerController *)imgPicker didFinishPickingMediaWithInfo:(NSDictionary *)info
on peu récupérer l'image dans le paramètre "info"
par [info objectForKey:UIImagePickerControllerEditedImage]
qui n'est pas reconnue en 2.2.1, comme précédemment on peu éviter les warnings en utilisant la directive de compilation, mais on ne peut pas vérifier proprement si le média est bien une image car il faut faire appel à une constante (kUTTypeImage) déclarée dans un frameworks 3.0... Comme c'est une chaine, on peu toujours la remplacer par @public.image, mais il ne faut pas abuser.
Donc du coup, je me demande comment on fait en pratique, dans les deux cas cités, j'aurais tendance à penser que la directive de compilation ne sert pas à la validation et que l'on a pas d'autre choix que de garder les deux méthodes obsolètes si l'on veut rester compatible 2.2.1.
Quel est votre expérience et votre avis sur la question?
Merci d'avance
Denis
pour publier une application compatible 2.2.1, Apple recommande de l'avoir compilé préalablement en 3.0 afin de faire sortir les warnings et éliminer les fonctions qui sont marquées obsolètes en 3.0.
Parmi ces fonctions, il y en a qui ne posent pas de problèmes, comme éliminer les setText sur des cellules, mais d'autres sont plus compliquées. Par exemple l'initialisation d'une cellule, j'ai utilisé #ifdef --IPONE_3_0 pour installer les deux codes (3.0 et 2.2.1), mais comme c'est de la compilation conditionnelle, cela ne doit pas beaucoup se voir dans l'exécutable que l'on livre... (donc j'imagine qu'ils sont obligés de le tolérer, puisque l'on doit compiler avec le SDK2.2.1.).
Mais ce qui me gène un peu plus c'est la capture d'image, on peu recourir à la même stratégie, mais cela pose quelques problèmes, dans le frameworks 3.0, le callback
- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingImage:(UIImage *)image editingInfo:(NSDictionary *)editingInfo
par
- (void)imagePickerController:(UIImagePickerController *)imgPicker didFinishPickingMediaWithInfo:(NSDictionary *)info
on peu récupérer l'image dans le paramètre "info"
par [info objectForKey:UIImagePickerControllerEditedImage]
qui n'est pas reconnue en 2.2.1, comme précédemment on peu éviter les warnings en utilisant la directive de compilation, mais on ne peut pas vérifier proprement si le média est bien une image car il faut faire appel à une constante (kUTTypeImage) déclarée dans un frameworks 3.0... Comme c'est une chaine, on peu toujours la remplacer par @public.image, mais il ne faut pas abuser.
Donc du coup, je me demande comment on fait en pratique, dans les deux cas cités, j'aurais tendance à penser que la directive de compilation ne sert pas à la validation et que l'on a pas d'autre choix que de garder les deux méthodes obsolètes si l'on veut rester compatible 2.2.1.
Quel est votre expérience et votre avis sur la question?
Merci d'avance
Denis
Connectez-vous ou Inscrivez-vous pour répondre.
Réponses
Car de toute façon avec la version 2.2.1 tu ne peux pas récupérer une vidéo, il faut plutôt faire un truc comme (pseudo code)
Ou sinon, dans l'onglet "Général" à côté de "Build", quand tu vois la liste des frameworks ajoutés à ton projet, à droite de chaque framework tu as un petit menu avec "Required" de choisi... Je me demande si tu mets sur "weak" à la place si ça ne ferait pas un chargement faible et donc uniquement si nécessaire et donc ne sera pas chargé en 2.2.1...?
Denis
Car en configuration "Debug", le processus de build utilise le zero-link, donc ne fait pas le linkage des différents fichiers objets générés, qui sont chargés à la volée. Ceci pour gagner en temps de build quand tu es en phase de debug et que tu build assez souvent.
Alors qu'en configuration "Release" il va jusqu'au bout du linkage et là s'il ne trouve pas un framework avec lequel tu as linké, il te mettra une erreur (alors qu'en Debug tu ne le verras qu'au runtime et seulement si tu utilises une fonction du framework en question si je ne m'abuse)
Merci pour tout
Denis
J'ai pas testé perso, car j'ai pas de modèle de projet qui colle et pas trop le temps de faire un truc en contexte... mais bon, c'est ce que je ferais en tout cas si j'avais un cas comme ça.
rajouté au moment du premier ajout du framework par le menu... je l'ai viré et cela fonctionne (je n'avais pas fait attention que je ne l'avais effacé que pour le mode debug). Par ailleurs je n'avais pas vu ces menus conditionnels qui sont en effet vraiment intéressants.
Merci
Denis