2009-12-08 4 views
2

Je souhaite détecter la version iPhone OS dans mon application. J'ai essayé d'utiliser le code de détection mais on m'a conseillé d'utiliser des macros. Quelqu'un a-t-il l'expérience, pouvez-vous publier un exemple de code et quelle bibliothèque utiliser?Comment détecter la version iPhone OS à l'aide de macros

Répondre

6

Je ne suis pas certain des macros qu'on vous conseille d'utiliser. J'ai toujours pensé que la méthode standard pour trouver le numéro de version de sorte qu'il sera compatiable avec les versions futures et précédentes était d'utiliser

NSString* versionNumber = [[UIDevice currentDevice] systemVersion] 

qui lui donne un NSString tel que @ « 2.0 » ou @ "2.2. 1 "

Il existe les constantes Version qui décrivent la version des classes Foundation utilisées, avec NSFoundationVersionNumber mais je ne suis pas certain de la fiabilité de ce code dans les anciens et futurs codes.

+0

Me battre à la réponse: P Pour ajouter, les macro auxquelles ils se réfèrent le plus souvent sont des macro de pré-processeur (#define). Ce n'est pas comme ça que ça fonctionne mais je peux voir comment les gens peuvent supposer que la version serait définie de telle manière. – Jay

+1

Les macros du préprocesseur vous permettent de procéder à une compilation conditionnelle en fonction de la version du système d'exploitation que vous ciblez, mais pas de la version du système d'exploitation iPhone sur laquelle l'application s'exécute. Par exemple: #if __IPHONE_OS_VERSION_MIN_REQUIRED> = __IPHONE_2_0 –

5

Rechercher dans Availability.h, en particulier les déclarations:

#define __IPHONE_2_0  20000 
#define __IPHONE_2_1  20100 
#define __IPHONE_2_2  20200 
#define __IPHONE_3_0  30000 
#define __IPHONE_NA  99999 

Et ne pas oublier de lire le commentaire d'en-tête géant. Les macros du préprocesseur sont définitivement le moyen le plus sûr de découper votre code en version os.

+0

Je crois que ce sont pour les bibliothèques d'écriture pour les applications iPhone mais pas pour les applications elles-mêmes. Mais c'est probablement ce à quoi le micro faisait allusion. Mais je suis assez certain que c'est pour la compilation et non pour la détection de version d'exécution. –

+0

Oui - ce serait uniquement à la compilation. – CajunLuke

+0

Cette méthode est extrêmement utile si l'on utilise un code pour twitter ou cloudservices. Les développeurs créent leurs propres "bibliothèques" pour Mac OS et iPhone. Quand il s'agit d'userinterfaces ce makros vraiment aider. Merci beaucoup! – JackPearse

Questions connexes