6
votes

Comment définir la macro du préprocesseur pour vérifier la version iOS

Je l'utilise pour vérifier la version iOS, mais cela ne fonctionne pas: xxx

quand je fais xxx

rien ne se passe. Quelque chose ne va pas ici?


3 commentaires

Voulez-vous que cela vérifie si un utilisateur de votre application est en cours d'exécution iOS 5? Si oui, vous voulez quelque chose comme la méthode de James. Un préprocesseur macro ne vous aidera pas avec cela, car il fonctionne au moment de la compilation.


Il n'y a pas de vérifications d'exécution dans votre code, alors comment sur Terre est-il censé connaître la version actuelle iOS? Tout ce que vous faites est de vérifier la version du SDK que votre code a été compilé.


ERR @mikikeweller (et Chris), j'ai peur que l'un ni l'autre d'entre vous ne soit correct. La macro crée effectivement une vérification d'exécution si le temps compilé est rempli. L'OP appelait simplement la macro de manière incorrecte. Voir ici pour une explication complète de la façon dont cela fonctionne: Cocoawithlove .COM / 2010/07 / ...


6 Réponses :


5
votes

Définir cette méthode: xxx

puis définissez la macro comme cette méthode.


1 commentaires

Nsorderedascending rendra cette méthode renvoyer false si le système d'exploitation actuel est> = 5.0. Vous devriez utiliser NsorderedDescendant



5
votes

Vous avez défini une macro, mais vous l'utilisez de manière non macro. Essayez quelque chose comme ça, avec votre même définition macro.

IF_IOS5_OR_GREATER(NSLog(@"iOS5");)


1 commentaires

Y a-t-il quelque chose que vous pourriez m'aider: Stackoverflow.com/q/21275316/434898 . Merci.



10
votes
#ifdef __IPHONE_5_0 
etcJust look for that constant. All the objective c constants start with two underscores

2 commentaires

Ceci est une macro de préprocesseur, ce qui signifie qu'il est exécuté lorsque l'application est compilée, plutôt que sur le périphérique de l'utilisateur. En outre, une réponse correcte a déjà été sélectionnée il y a près d'un an ...


Cette macro est utile pour séparer le code dans le temps de compilation avec #ifdef et #ifndef , toutes les autres réponses ne sont disponibles que dans l'exécution avec si Utilisation de la déclaration.



2
votes

Pour un chèque d'exécution Utilisez quelque chose comme ceci:

if([[UIDevice currentDevice] iOSVersionIsAtLeast:@"6.0"]) self.navigationBar.shadowImage = [UIImage new];


0 commentaires

14
votes

beaucoup plus simple: xxx


1 commentaires

Cela a l'inconvénient que vous ne pouvez pas l'utiliser en dehors des blocs de code, par exemple dans les fichiers d'en-tête, etc.



1
votes
#define isIOS7 ([[[UIDevice currentDevice]systemVersion]floatValue] > 6.9) ?1 :0

0 commentaires