2013-06-17 1 views
0

Мне нужно проверить CFBundleIdentifier в макросе, чтобы проверить, какая цель запущена, чтобы определить, могу ли я импортировать файл, но я не могу понять это.Доступ к CFBundleIdentifier с макросом

#if TARGET_IS_XYZ 
#import SomeFile.h 
#endif 

Я пробовал:

#define TARGET_IS_XYZ [[[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleIdentifier"] isEqualToString:@"com.app.xyz"] 

, но потом понял, что [NSBundle maindBundle] пока не доступен до выполнения, так что я не могу использовать. Есть ли другой способ получить CFBundleIdentifier или проверить, какая цель запущена?

P.S. Под целевым я имею в виду приложение, а не iOS или OSX.

+0

Ваш вопрос, похоже, запутывает время выполнения и создает задачи времени. Во всех случаях, действительно ли «цель запущена» действительно означает, что «цель строится»? – Taryn

ответ

0

Возможно, ваш макрос сможет выполнить ваши намерения, проверив либо TARGETNAME, либо окружающую среду PROJECT. В качестве альтернативы вы можете установить каждый вариант сборки для установки уникальной среды var. Существуют также способы (синтаксис которых ускользает от меня сейчас): использовать окружения vars и макросы для установки значений в вашем файле info.plist во время сборки, что позволит вам управлять как именем приложения, так и вашим файлом из одной точки.