Я работаю над проектом, который включает приложение Mac и приложение iPad, совместно использующее код. Как я могу использовать условные компиляционные ключи для исключения кода для Mac из проекта iPhone и наоборот? Я заметил, что TARGET_OS_IPHONE
и TARGET_OS_MAC
равны 1, и поэтому оба они всегда верны. Есть ли другой переключатель, который я могу использовать, который вернет true только при компиляции для определенной цели?
По большей части, я получил файлы к сотрудничеству, переместив #include <UIKit/UIKit.h>
и #include <Cocoa/Cocoa.h>
в заголовки precompile для двух проектов. Я делюсь моделями и некоторым кодом утилиты, который извлекает данные из RSS-каналов и Evernote.
В частности, функция [NSData dataWithContentsOfURL:options:error:]
принимает другую константу для параметра параметров iOS 3.2 и более ранних версий и Mac OS 10.5 и ранее, чем для iOS 4 и Mac OS 10.6. Условие, которое я использую, следующее:
#if (TARGET_OS_IPHONE && (__IPHONE_OS_VERSION_MAX_ALLOWED > __IPHONE_3_2)) || (TARGET_OS_MAC && (MAC_OS_X_VERSION_MIN_REQUIRED > MAC_OS_X_VERSION_10_5))
Это похоже на работу, но я хочу убедиться, что это пуленепробиваемый. Я понимаю, что если версия Mac установлена в 10.6, но версия iOS установлена на 3.2, она все равно будет использовать новые константы, даже если она компилирует для iOS 3.2, что кажется неправильным.
Заранее благодарим за помощь!