7
votes

Développer une application pour 10.8+ mais en utilisant 10,9 SDK

Mavericks sort et pour les développeurs qui est toujours un temps chargé avec toutes ces nouvelles fonctionnalités et API à connaître et à utiliser. Pour moi, je pense que c'est le moment idéal pour poser une question qui me dérange depuis très longtemps.

Voici la chose, dans le contexte: je développe une application que je veux pouvoir exécuter 10.8 (le système cible est donc de 10,8 ans). En ce moment, j'utilise le 10.8 SDK. Cependant, avec la libération de 10,9 vient des aptituées assez douces que j'aimerais utiliser dans mon application. Je les utilise dans mon code, mais bien sûr, je dois compiler mon application contre le 10.9 SDK. Si je le fais, puis-je toujours exécuter l'application sur 10.8 ?

ou, de manière plus générale, si je compile mon application contre un SDK, puis-je l'exécuter sur un Mac OS "inférieur"? Si oui, pouvez-vous expliquer comment ça marche sous la hotte (quel est le compilateur)? C'est une mission pour moi.


0 commentaires

3 Réponses :


5
votes

En règle générale, XCode dissocie le problème de la cible SDK et de déploiement de l'application.

Le SDK est déterminé par sdk de base et la cible de déploiement est déterminée par la cible de déploiement OS X . Celles-ci apparaissent tous deux dans les paramètres de construction à l'onglet pour chaque cible de Xcode.

Lors de la programmation avec différents SDK et cible, vous êtes responsable de vous assurer de ne pas appeler des méthodes ou des fonctions sur un système d'exploitation qui ne les a pas. Ceci est souvent facilité par une liaison faibles (dans le cas de nouveaux cadres) et / ou en utilisant -RePetoselector: dans le cas de nouvelles méthodes sur les classes et les cadres existants.


3 commentaires

Mais je pense qu'il existe des méthodes introduites, par exemple, dans 10.8 également disponibles sur 10.7. Comment puis-je savoir avant de compiler si les méthodes sont disponibles sur chaque version du système d'exploitation?


Cela reste comme un exercice pour le développeur. Il y a quelques outils que les gens ont inscrit pour vérifier les versions SDK, même si j'ai du mal à localiser un exemple en ce moment. Vous pouvez toujours essayer de recompiler votre code avec les autres SDK et ne pas les erreurs qu'il génère, puis changez le SDK en arrière et change autour d'eux.


Si vous avez la cible de déploiement définie sur une version plus ancienne, les cadres qui n'étaient pas disponibles seront automatiquement faibles. Cela signifie que si l'application est exécutée sur une version plus ancienne, les fonctions liées faibles indisponibles auront des pointeurs de fonction NULL, des noms de classe liés indisponibles, des noms de classe liés indisponibles de NSCLASSFROMString et des méthodes liées faibles indisponibles ne reviendront pas de la méthode des objets contenant des objets: méthode.



1
votes

en Xcode, sous Paramètres de construction, il existe une option pour le système d'exploitation cible où vous pouvez choisir 10.8. 10.8 Les applications sont généralement compatibles avec 10,9 afin que l'application compilée fonctionnera avec les deux OSS.


0 commentaires

1
votes

Ne vous attendez pas à ce que les nouvelles API fonctionnent lorsqu'elles fonctionnent sur une version inférieure. Cela ne fonctionne pas de cette façon.


0 commentaires