La meilleure façon de le faire est d'utiliser le préprocesseur définir __IPHONE_OS_VERSION_MAX_ALLOWED.
Vous faites cela en ajoutant l'option
__IPHONE_OS_VERSION_MAX_ALLOWED=__IPHONE_4_2
ou quelque chose de similaire à votre « macros préprocesseur » dans les paramètres de compilation de votre cible. Vous pouvez rechercher les versions disponibles dans <Availability.h>. Malheureusement, si vous ajoutez ceci, cela entraînera des erreurs de correspondance avec votre en-tête précompilé. Donc, pour résoudre ce problème, vous devez également désactiver l'option "Précompilier l'en-tête de préfixe" dans vos paramètres de construction. Une fois que vous faites cela, vous aurez un tas d'erreurs pour les classes qui n'existent pas sur votre SDK ciblé (par exemple NSOrderedSet n'existe pas dans iOS 4.2). Si vous essayez de revenir pré-iOS 4, vous aurez probablement autant d'erreurs que le compilateur bails - Je ne connais pas de solution de contournement pour cela. Dans tous les cas, ignorez les erreurs sur les classes manquantes dans les en-têtes UIKit, et allez au bas de la liste des erreurs; là vous devriez trouver une erreur pour chaque fois que vous utilisez une méthode ou une classe qui n'est pas incluse dans le SDK pointé par __IPHONE_OS_VERSION_MAX_ALLOWED. Assurez-vous que chacune de ces méthodes est incluse dans un
if([targetObject respondsToSelector:@selector(thePossiblyMissingSelector:)]
et vous devriez être en sécurité. Les classes qui peuvent être manquantes doivent être testées également
if ([NSOrderedSet class] != nil)
Ces paramètres ne sont cependant pas quelque chose que vous voulez oublier accidentellement. Pour en faire une option automatique de test, procédez comme suit:
- Créez une nouvelle configuration de construction appelée quelque chose comme "Ancien test SDK".
- Définissez __IPHONE_OS_VERSION_MAX_ALLOWED et l'option de tête précompilée uniquement pour cette configuration (appuyez sur la flèche de divulgation à côté de chaque ligne dans Paramètres de construction pour accéder aux paramètres de configuration). Dupliquez votre schéma actuel et définissez son nom sur quelque chose comme "Ancien test SDK".
- Définissez la configuration de construction de l'élément Exécuter dans ce nouveau schéma sur la configuration de génération que vous avez créée à l'étape 1.
- Sélectionnez le nouveau schéma et la nouvelle génération.
Remarques:
- Je ne fais aucune garantie que cela va attraper tout/tous vos problèmes.
- Tout ce qui ne fait pas partie d'UIKit ne sera pas détecté par cette vérification.
- Ce n'est pas un substitut pour tester votre code sur les versions d'iOS que vous planifier pour prendre en charge.
Je pense qu'il veut des avertissements de compilation pour les méthodes manquantes lorsque sur un iOS inférieur à la base SDK. XCode ne vous donnera que des avertissements au moment de la compilation pour le sdk de base installé, donc je ne pense pas que ce soit possible. Si vous ne devez tester qu'un seul périphérique, vous pouvez écrire un tas de scénarios de test pour ce périphérique et les exécuter. – vakio
Exactement! Donc, ce n'est pas possible :(. – Quentin
duplication possible de [Y at-il un moyen pour XCode d'avertir de nouveaux appels d'API?] (Http://stackoverflow.com/questions/4676000/-there-a-way-for- xcode-to-warn-about-new-api-calls) – JosephH