Примечание: я бы предпочел не использовать ничего определенного во время компиляции, включая вызов CFBundleGetBundleWithIdentifier () с жестко закодированным строковым идентификатором.
Потому что это WET , верно?
Вот как вы можете сделать это решение СУХИМ.
Сначала определите некоторые макросы для этого в заголовочном файле, например так:
#define MY_PLUGIN_BUNDLE_IDENTIFIER com.example.wiflamalator.photoshop-plugin
#define MY_PLUGIN_STRINGIFY(x) #x
#define MY_PLUGIN_BUNDLE_IDENTIFIER_STRING MY_PLUGIN_STRINGIFY(MY_PLUGIN_BUNDLE_IDENTIFIER)
Импортировать файл заголовка в код, который вызывает CFBundleGetBundleWithIdentifier
. В этом коде используйте CFSTR(MY_PLUGIN_BUNDLE_IDENTIFIER_STRING)
.
Затем в Xcode либо установите этот файл в качестве заголовка префикса Info.plist, либо (если он у вас уже есть) #include
в этот заголовок. Наконец, в Info.plist установите идентификатор пакета на MY_PLUGIN_BUNDLE_IDENTIFIER
(в строковом значении, конечно).
Теперь у вас есть идентификатор пакета, записанный ровно в одном месте (заголовок), из которого препроцессор C помещает его во все места, где он должен быть, так что вы можете искать свой собственный пакет, используя CFBundleGetBundleWithIdentifier
.