условно импортные рамки - PullRequest
0 голосов
/ 27 июня 2010

хорошо для начала, я уверен, что это простой вопрос.

Я занимаюсь разработкой приложения для iPhone с iAd Framework, которое работает только для iOS 4.0 или выше.

Все ещеЯ хочу выбрать цель развертывания iPhone OS 3.0, которая приводит к сбою всего.

  • Как условно включить инфраструктуру iAd?... Я имею в виду, это было бы что-то вроде: ... если ([[UIDevice currentDevice] systemVersion]> = 4.0]) #import

Очевидно, это не будет работать, потому что я неНе знаю правильный синтаксис.Также:

  • Как условно объявить переменную AdView *?
  • Как условно обработать эту переменную AdView * в моем файле реализации.

Если вы, ребята, могли бы помочь мне, я буду очень впечатлен.

Спасибо

1 Ответ

2 голосов
/ 27 июня 2010

Вам не нужно менять свое включение, вам нужно сделать слабо связанную iAd (или любую другую новую платформу):

В вашей цели найдите iAd в связанных платформах и измените его "Роль" с "Обязательный" на "Слабый".

Для условной обработки переменной используйте функцию NSClassFromString, например:

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

Если ОС старше iOS 4.0, AdClass будет nil и код не будет выполняться. Обратите внимание, что использование ADBannerView* в качестве типа переменной не должно вызывать проблем, так как это всего лишь подсказка для компилятора и то же самое, что и id после компиляции.

...