2010-06-27 4 views
0

bien pour commencer Je suis sûr que c'est une question simple.conditionnellement importer cadre

Je développe une application pour iPhone avec l'iAd Framework, qui ne fonctionne que pour iOS 4.0 ou supérieur.

Cependant, je veux choisir une cible de déploiement iPhone OS 3.0, ce qui entraîne un plantage total.

  • Comment inclure conditionnellement le framework iAd? ... Je veux dire, ce serait quelque chose comme: ... si ([[UIDevice currentDevice] VersionSystème]> = 4.0]) #import

Il est évident que cela ne fonctionnera pas parce que je ne connaître la syntaxe correcte. Aussi:

  • Comment déclarer une variable AdView * sous condition?
  • Comment gérer de manière conditionnelle cette variable AdView * dans mon fichier d'implémentation.

Si vous pouviez m'aider, je serais très impressionné.

Merci

+0

Ceci est déjà couvert: http://stackoverflow.com/questions/3027120/how-to-make-iphone-app-for-multiple-firmwares/3027213#3027213 – progrmr

Répondre

2

Vous n'avez pas besoin de changer inclure, vous devez faire la iAd (ou tout autre nouveau cadre) faiblement liés:

Dans votre cible, trouver iAd dans les cadres liés et changer son «rôle» de «requis» à «faible».

Pour gérer la variable conditionnelle, utilisez la fonction NSClassFromString, comme ceci:

Class AdClass = NSClassFromString(@"ADBannerView"); 
if(AdClass) {//if the class exists 
    ADBannerView* myAd = [[AdClass alloc] initWithFrame:CGRectZero]; 
    // do something with the ad 
} 

Si OS est plus ancienne que iOS 4.0, AdClass seront nil et le code ne sera pas exécuté. Notez que l'utilisation de ADBannerView* comme type de la variable ne devrait pas causer de problèmes, car c'est juste un indice pour un compilateur et est le même que id après la compilation.

+0

J'ai essayé de changer déjà faible, mais ne semble pas fonctionner - il ne cesse de dire un tel fichier ou répertoire. Qu'est-ce qui ne va pas? (Je suis allé tout le chemin de la cible, obtenir des informations, et j'ai mis le type à faible au lieu de nécessaire). Aussi, j'ai besoin de gérer mon AdBannerView de nombreuses façons (en le mettant principalement en avant). Où dois-je déclarer l'extrait que vous avez envoyé? À la mise en œuvre? ViewDidLoad ne fonctionnera évidemment pas, alors où? (désolé de mes compétences de base ici). Merci – GSchv

+0

vous devez importer iAd comme d'habitude ('#import '). Vous pouvez utiliser le code ci-dessus où vous voulez utiliser 'ADBannerView' (y compris' viewDidLoad' si vous voulez). Après la première ligne, 'AdClass' est exactement la même que la classe' ADBannerView', ou nul si elle n'est pas supportée, le reste est identique à l'utilisation normale de la classe. – mohsenr

Questions connexes