Maintenant que j'ai eu plus de temps avec l'IPAD et en faisant Apps universelle, je me suis rendu compte il ya quelques choses importantes que j'ai laissé de côté du post de samedi.
D'abord, j'ai parlé de la UI_USER_INTERFACE_IDIOM macro nouvellement définies (). Il ya un problème avec ce dès maintenant, cependant, car l'iPhone OS 3.2 a été une version iPad uniquement. La plupart d'entre nous sont en supposant que l'iPhone et l'iPad finira par tourner sur la même version OS, mais pour l'instant ils n'ont pas, et UI_USER_INTERFACE_IDIOM () n'existe pas dans la 3.1.2 et antérieures. Donc, si vous créez une version Universal Binary, vous ne pouvez pas compiler le code qui l'utilise.
Au lieu de cela, vous devez utiliser une technique différente, qui est la définition de vérifier le précompilateur __IPHONE_OS_VERSION_MAX_ALLOWED, qui est fixé au numéro de version OS sans points. La définition est de cinq chiffres, le premier est le numéro de version majeur, la deuxième et la troisième sont le numéro de version mineur, et le nombre des quatrième et cinquième sont le numéro de version de patch. Ainsi, 3,2 serait définie au 30200 et 3.1.2 seraient définis au 30102, alors voici comment vous devriez sans doute la conception de votre code pour le moment:
Dans l'avenir, vous n'aurez pas besoin de le vérifier, mais il ne fera pas mal à l'après. Comme il est résolu pendant la pré-compilation, il n'ya pas d'autres inconvénients que d'un peu de fouillis de code.
J'ai oublié de mentionner qu'il ya une option pour mettre à niveau des objectifs à Universal dans le menu Project. Il permet de convertir votre cible pour vous, et vous devriez l'utiliser au lieu de régler manuellement le projet (comme je le faisais mes quelques premier). Si l'option est grisée, assurez-vous que la base de votre projet SDK (pas seulement le moment choisi SDK) est périphérique iPhone 3.0 +. S'il est plus vieux, ou si elle ne peut pas trouver le SDK de base, vous n'obtiendrez pas l'option.
Cette option va faire quelques petites choses. Il mettra à jour votre SDK de base à 3,2 et le SDK de déploiement pour le SDK de base d'origine. Il permet de configurer vos objectifs soit de créer une application universelle, ou deux applications distinctes. Il va créer NIB votre application iPad principale pour vous. Il va priver le ARM6 instructions de la partie iPad du binaire.
D'abord, j'ai parlé de la UI_USER_INTERFACE_IDIOM macro nouvellement définies (). Il ya un problème avec ce dès maintenant, cependant, car l'iPhone OS 3.2 a été une version iPad uniquement. La plupart d'entre nous sont en supposant que l'iPhone et l'iPad finira par tourner sur la même version OS, mais pour l'instant ils n'ont pas, et UI_USER_INTERFACE_IDIOM () n'existe pas dans la 3.1.2 et antérieures. Donc, si vous créez une version Universal Binary, vous ne pouvez pas compiler le code qui l'utilise.
Au lieu de cela, vous devez utiliser une technique différente, qui est la définition de vérifier le précompilateur __IPHONE_OS_VERSION_MAX_ALLOWED, qui est fixé au numéro de version OS sans points. La définition est de cinq chiffres, le premier est le numéro de version majeur, la deuxième et la troisième sont le numéro de version mineur, et le nombre des quatrième et cinquième sont le numéro de version de patch. Ainsi, 3,2 serait définie au 30200 et 3.1.2 seraient définis au 30102, alors voici comment vous devriez sans doute la conception de votre code pour le moment:
#if __IPHONE_OS_VERSION_MAX_ALLOWED >= 30200
if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad)
NSLog(@"iPad Idiom");
else
#else
NSLog(@"iPhone Idiom");
#endifDans l'avenir, vous n'aurez pas besoin de le vérifier, mais il ne fera pas mal à l'après. Comme il est résolu pendant la pré-compilation, il n'ya pas d'autres inconvénients que d'un peu de fouillis de code.
J'ai oublié de mentionner qu'il ya une option pour mettre à niveau des objectifs à Universal dans le menu Project. Il permet de convertir votre cible pour vous, et vous devriez l'utiliser au lieu de régler manuellement le projet (comme je le faisais mes quelques premier). Si l'option est grisée, assurez-vous que la base de votre projet SDK (pas seulement le moment choisi SDK) est périphérique iPhone 3.0 +. S'il est plus vieux, ou si elle ne peut pas trouver le SDK de base, vous n'obtiendrez pas l'option.
Cette option va faire quelques petites choses. Il mettra à jour votre SDK de base à 3,2 et le SDK de déploiement pour le SDK de base d'origine. Il permet de configurer vos objectifs soit de créer une application universelle, ou deux applications distinctes. Il va créer NIB votre application iPad principale pour vous. Il va priver le ARM6 instructions de la partie iPad du binaire.
Note: Comme quelques personnes ont fait remarquer dans les commentaires, UI_USER_INTERFACE_IDIOM () fonctionne très bien dans les applications universelles. Où vous ne pouvez pas l'utiliser est, si vous voulez tester la fonctionnalité de votre application iPhone universelle dans le simulateur. Le simulateur de 3,2 ne fonctionne que dans la configuration de l'iPad, afin de tester l'iPhone s'appuyer sur le simulateur, vous devez configurer le SDK 3.1.2 Active, et ce chèque permettra à votre code à compiler contre la cible 3.1.2 Simulator. Si vous êtes tests sur l'appareil, le code ci-dessus est inutile (mais aussi ne fait pas mal n'importe quoi). Désolé pour la confusion.
Aucun commentaire:
Enregistrer un commentaire