Règle 1: Ne dépendez pas de la version ou du type de périphérique pour déterminer si une fonction est disponible. Différents appareils (iPhone, iPod Touch et iPad) peuvent obtenir la même fonctionnalité mais à différentes versions de l'OS. Lien faible par rapport aux cadres et classes manquantes sera nil
. Ou utilisez la fonction NSClassFromString()
qui renvoie également nil
si une classe n'existe pas. Utilisez également -[NSObject respondsToSelector:]
pour rechercher si une méthode existe ou non.
Règle 2: Apple déconseille d'utiliser les constantes définies (comme __IPHONE_2_2
) lors de la vérification des versions, utilisez plutôt leurs valeurs numériques en tant que tel:
#if (__IPHONE_OS_VERSION_MAX_ALLOWED >= 40200)
NSLog(@"BUILT against iPhone 4.2 or later");
#endif
Mais ne prenez avis à l'aide #if
compilation directive ne vérifiera que la version du SDK vous construire contre pas quelle version du système d'exploitation sera plus tard fonctionner sur.
Les deux 4.1 et 4.2 sont ≥ 2,2. – kennytm
# if/# endif sont des directives * compile-time *. Tout ce qu'ils font est comparer avec vos paramètres de construction pour voir quelle version du système d'exploitation que vous ciblez. Mais le même code sera généré quel que soit le système d'exploitation utilisé. Vous voulez un contrôle * run-time *. – benzado
Essayez celui-ci: http://jayprakashdubey.blogspot.in/2014/07/check-device-os-version.html –