iOS - условная компиляция (xcode) - PullRequest
2 голосов
/ 03 января 2011

Я создал дополнительную цель для iPad для того, что изначально было приложением для iphone.

Из документов Apple: «Почти во всех случаях вы захотите определить новый класс контроллера представления для управления версией интерфейса вашего приложения для iPad, особенно если этот интерфейс вообще отличается от интерфейса вашего iPhone. Вы можете использовать условную компиляцию для координации создания Контроллеры разных представлений. "

Но они не дают никаких примеров или подробностей о том, что такое условная компиляция. Кто-нибудь может привести пример? И где бы я это сделал?

EDIT: Я попытался определить следующие флаги C в цели iPad: -D USE_IPAD, -DUSE_IPAD. В любом случае, этот код всегда приводит к регистрации IPHONE:

#ifdef USE_IPAD

        NSLog(@"IPAD");

    #else

        NSLog(@"IPHONE");

    #endif

Чего мне не хватает?

Ответы [ 2 ]

2 голосов
/ 03 января 2011

Другим подходом, который может быть предпочтительнее условной компиляции, является прямолинейный if else оператор:

if(UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) {
    // iPad code
} else {
    // iPhone or iPod Touch code
}

Я предпочитаю это, а не условную компиляцию, так как мне легче поддерживать и меньше шума в линии.

2 голосов
/ 03 января 2011

Условная компиляция - это место, где вы используете директивы компилятора (или флаги компилятора) для управления компиляцией.

#ifdef SOME_CONDITION

//This will only be compiled if SOME_CONDITION is defined as a compiler flag

#else

//Otherwise, this code will compile.

#endif

Вы можете определить директивы компилятора в настройках вашего проекта. Щелкните правой кнопкой мыши на Target (создайте несколько целей, например, одну для iPhone и одну для iPad) и нажмите «Получить информацию». Затем прокрутите вниз до Другие флаги C . Вы можете добавить (а) флаг (ы) туда.

alt text

EDIT:

Похоже, я совершил ту же ошибку, что и вы. Некоторый быстрый поиск в Google приводит меня к документации Apple и этой записи блога , в которой говорится, что вам может понадобиться добавить новое поле в настройки сборки.

...