Не могу условно компилировать для iPhone / Mac - PullRequest
4 голосов
/ 30 марта 2012

У меня есть этот источник (xcode 3.2.5):

NSLog(@"IPHONE = %d, SIMULATOR = %d, MAC = %d", TARGET_OS_IPHONE, TARGET_IPHONE_SIMULATOR, TARGET_OS_MAC);

И я получаю такой результат:

2012-03-30 13:50:06.777 MyApp[36810:207] IPHONE = 1, SIMULATOR = 1, MAC = 1

Неудивительно, что мои #if утверждения перепутаны!

Что дает?Любые идеи?

FWIW : на (привязанном) iPod Touch я получаю это: IPHONE = 1, SIMULATOR = 0, MAC = 1

Добавлено : Ну, я понял, чтоМоя первоначальная проблема с #if была связана с неправильным написанием TARGET_OS_IPHONE как TARGET_OS_PHONE в нескольких местах.(Добрый день, скопируйте / вставьте!)

Все еще хотел бы найти точное описание порядка определения Apple.

Ответы [ 2 ]

3 голосов
/ 07 декабря 2013

Используйте TARGET_OS_IPHONE (только!) Для различения iOS и OSX.

#if TARGET_OS_IPHONE
// iOS
#else
// Mac OS X
#endif

TARGET_OS_MAC будет равно 1 как в OSX, так и в iOS;это предшествует iOS, и iOS считается вариантом OSX, поскольку TargetConditionals.h.

0 голосов
/ 30 марта 2012

Я могу ошибаться, но я предположил, что TARGET_OS_MAC указывает, что вы создаете для Mac OS X (в отличие, скажем, от win32). iOS на самом деле является версией Mac OS X (хотя она не маркируется / не продается как таковая).

Чтобы увидеть, как они все определены, выберите цель сборки и щелкните ее определение в xcode с помощью команды.

В заголовочном файле макросы определяются следующим образом:

TARGET_OS_MAC           - Generate code will run under Mac OS
TARGET_OS_WIN32         - Generate code will run under 32-bit Windows
TARGET_OS_UNIX          - Generate code will run under some non Mac OS X unix 
TARGET_OS_EMBEDDED      - Generate code will run under an embedded OS variant
                          of TARGET_OS_MAC
TARGET_OS_IPHONE        - Generate code will run under iPhone OS which 
                          is a variant of TARGET_OS_MAC.

Таким образом, можно ожидать, что для iOS определено TARGET_OS_MAC, а также, например, TARGET_OS_IPHONE.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...