Je suis en train de travailler sur un projet qui comprend une application Mac et une application iPad qui partager du code. Comment puis-je utiliser le conditionnel compiler les commutateurs à exclure Mac-code spécifique à partir de l'iPhone de projet et vice-versa? J'ai remarqué qu' TARGET_OS_IPHONE
et TARGET_OS_MAC
sont à la fois 1, et donc ils sont tous les deux toujours vrai. Est-il un autre interrupteur que je peux utiliser seulement renverra true lors de la compilation pour une cible spécifique?
Pour la plupart, j'ai reçu les fichiers de coopérer en déplaçant #include <UIKit/UIKit.h>
et #include <Cocoa/Cocoa.h>
dans le précompiler les en-têtes pour les deux projets. Je suis le partage de modèles et certaines utilitaire de code qui récupère des données à partir de flux RSS et Evernote.
En particulier, l' [NSData dataWithContentsOfURL:options:error:]
fonction prend une autre constante pour le paramètre options iOS 3.2 et les versions antérieures de Mac OS 10.5 et plus tôt qu'elle ne l'est pour iOS 4 et Mac OS 10.6. Le conditionnel que j'utilise est:
#if (TARGET_OS_IPHONE && (__IPHONE_OS_VERSION_MAX_ALLOWED > __IPHONE_3_2)) || (TARGET_OS_MAC && (MAC_OS_X_VERSION_MIN_REQUIRED > MAC_OS_X_VERSION_10_5))
Cela semble fonctionner, mais je veux m'assurer que c'est l'épreuve des balles. Ma compréhension est que si la version Mac est mis à 10.6, mais la version iOS est fixé à 3,2, il continuera d'utiliser les nouvelles constantes, même si c'est de la compilation pour iOS 3.2, qui semble incorrecte.
Merci d'avance pour toute aide!