2010-12-07 5 views
4

J'ai développé et application pour iPhone. Cela fonctionne très bien sur os4 mais cela ne marche pas sur os3.1. En fait fonctionne mais il y a quelques problèmes; après l'écran de démarrage, quel écran apparaît. tandis que je quitte l'application, je peux voir l'application est ouverte avec succès, mais juste voir en sortant.trouver apis non pris en charge avec la version OS

Donc je me demande s'il existe un outil qui indique quelles API ont des problèmes avec os3.1? J'ai donc une chance de les remplacer.

Répondre

1

Définissez le SDK de base de votre projet sur iphone-os-3-1, puis créez. Tous les messages d'erreur sur les classes, les méthodes et les fonctions qui n'existent pas doivent désigner les choses ajoutées depuis iphone-os-3-1, puisque votre projet est bien construit et lié au SDK iphone-os-4-0.

Si vous ne possédez pas le SDK iphone-os-3-1, essayez ceci:

  • Ouvrez les paramètres de compilation de votre projet.
  • Recherchez le paramètre "Macros du préprocesseur".
  • Modifier et ajouter __IPHONE_OS_VERSION_MAX_ALLOWED=30100

Maintenant, essayez la construction. Cela devrait entraîner l'indisponibilité de tout ce qui est introduit après iOS 3.1, produisant les mêmes erreurs que si vous étiez passé au SDK iphone-os-3-1.

+0

mais il n'y a que 4.0 et 3.2. comme base sdk. – ysnky

+0

il donne 8 erreurs mais n'a pas de sens pour moi /UIView.h:250: erreur: attendu ')' avant 'UIViewAnimationOptions' /UIDevice.h:76: erreur: attendu specifier-qualifier-liste avant 'UIUserInterfaceIdiom' /UIApplication.h: 187: erreur: spécificateur-qualifier-list attendu avant 'UIApplicationState' /UIApplication.h:190: erreur: attendu ')' avant 'UIBackgroundTaskIdentifier' – ysnky

+0

Effectivement, les docs montrent que toutes ces choses ont été introduites après 3.1 .3. Si vous devez soutenir 3.1.3 alors vous devez travailler autour d'eux. –

1

Si vous souhaitez vérifier une API spécifique, exécutez-la simplement dans votre code avec une réponse appropriée. Par exemple, pour voir si l'impression est pris en charge, exécutez cette ...

if (NSClassFromString(@"UIPrintInfo")) { 

} 
0

Il est une bonne idée d'obtenir une deuxième installation de Xcode pour cette situation, dans ce cas, vous avez besoin 3.2.1 avec SDK 3.1.3 - Je souhaite pouvoir vous aider avec un lien de téléchargement car il n'apparaît plus sur la page d'Apple, mais j'ai recherché par google dans le passé et trouvé des liens de téléchargement officiels, qui fonctionneront tant que vous êtes connecté avec votre compte développeur, alors bonne chance. Le bit ennuyeux est que vous avez besoin de parcourir vos fichiers de projet et de définir "Base SDK" à 3.1.3 puis de nouveau après avoir terminé l'exercice. Mais c'est le moyen le plus simple de signaler ce que vous ne pouvez pas faire en 3.1.3. "sudo rm -rf" (je me sens nerveux même en tapant ça) a une excellente méthode, mais vous devez avoir une idée de ce qui pourrait être sûr et ce qui pourrait ne pas l'implémenter sinon vous vous retrouverez avec le code 10x doit être.

Apple vraiment a besoin de résoudre ce problème - espérons-le en signalant les méthodes antérieures à la «cible de déploiement» spécifiée, de la même manière que les méthodes obsolètes sont signalées.