Есть ли способ заставить / вызвать / заставить Interface Builder запускать препроцессор C при сканировании исходных файлов на ссылки IBOutlet?
Это сложная проблема, я вижу, поскольку в идеальном мире необходимо предварительно обработать файл с тем же контекстом, что и проект, то есть с предварительно скомпилированными заголовками и т. Д. (Это гораздо более вероятно, если IB работает встроенный в XCode я бы догадался).
У меня есть некоторые хитрости с макросами, которые я хочу сделать.
Во-первых, оставляя в стороне причину макросов (поскольку это не особенно важно для этого вопроса, кроме обеспечения мотивации), мой большой камень преткновения заключается в том, что IB довольно упрощен в том, как он распознает торговые точки. Если я использую свои макросы, я не могу убедить IB найти розетки.
Например, если я хочу заменить:
@property (retain, nonatomic) IBOutlet UIWindow* window;
с моими макросами это будет выглядеть примерно так:
ECPropertyDefine(window, UIWindow*, retain, nonatomic);
К сожалению, очевидно, что по умолчанию IB не выполняет никакого расширения макроса, и, следовательно, не имеет ни малейшего понятия, что это выход, независимо от того, помещаю ли я IBOutlet в определение макроса или в параметры, которые я вызываю макрос с.
Мне было просто интересно, может ли где-нибудь в IB быть какой-то неясный хук, который позволил бы сценарию предварительно обрабатывать исходные файлы при их сканировании IB.