2010-06-08 3 views
0

Je suppose qu'il va juste se bloquer, non? Si je développe une application iPhone qui utilise les SDK iOS 4 et qui se trouve dans l'App Store, comment puis-je m'assurer qu'elle ne sera pas téléchargée par une personne qui utilise une ancienne version de l'iOS?Que se passera-t-il si mon application iPhone iOS 4 est exécutée sur un téléphone iOS 3.2?

Merci d'avance pour votre aide!

+0

Il n'y a pas de téléphones iOS 3.2. iOS 3.2 est/seulement/pour l'iPad. iOS 3.0 et 3.1 sont pour l'iPhone. –

Répondre

2

Si votre projet spécifie 4.0 comme cible, il ne sera même pas chargé sur le téléphone 3.2 - pas de problème. Lorsque vous publiez une application dans le magasin, vous spécifiez le niveau de système d'exploitation minimum et les périphériques acceptables (par exemple, vous ne cherchez pas le GPS sur un iPod Touch). Il y a un contrôle de compatibilité qui devrait empêcher le chargement d'une application si elle n'est pas compatible. Le processus d'approbation de l'application (espérons-le) s'assure que ce que vous avez dit est compatible. Si vous utilisez des API qui n'existent pas sur l'appareil (parce que vous ciblez une version antérieure à l'introduction de cette API ou pour toute autre raison), alors vous aurez un crash dû à un sélecteur inconnu. .

Vous pouvez utiliser

#if __IPHONE_OS_VERSION_MIN_REQUIRED >= 30200 

pour vérifier la version que vous visez ... le premier numéro (3) est la révision majeure, le troisième numéro (2) est la révision mineure. Par conséquent, la vérification indiquée est pour 3.2.

2

Plutôt que d'utiliser l'approche d'Adam Eberbach en utilisant la compilation des directives de préprocesseur de temps pour diviser votre code, envisagez d'utiliser des contrôles de temps d'exécution comme respondsToSelector:, en utilisant NSClassFromString chèques contre zéro pour déterminer si les classes existent, et faibles de liaison aux nouveaux cadres et les bibliothèques. Cela vous permettra d'écrire une application qui peut vivre sur plusieurs périphériques sans aucune ségrégation de code ou binaires séparés.

+0

est-ce que cela entraîne un gonflement du code, ou pire, une performance plus lente/plus lourde? –

+0

Je crois que les impacts sur les performances sont complètement négligeables ... Selon votre définition du gonflement du code, je serais enclin à ne pas être d'accord. Il y a quelques lignes ici et là, qui peuvent être supprimées au fur et à mesure que vous supprimez la prise en charge des systèmes d'exploitation hérités. – Jasarien

+0

respondsToSelector est un très bon moyen de le faire, probablement mieux que le préprocesseur. –

Questions connexes