【发布时间】:2010-07-22 20:07:13
【问题描述】:
在扫描源文件以查找 IBOutlet 引用时,是否有任何方法可以强制/哄骗/鼓励 Interface Builder 运行 C 预处理器?
我可以看到,这是一个棘手的问题,因为在理想情况下,它需要使用与项目相同的上下文来预处理文件,即使用预编译的头文件等(当 IB 是我猜是集成到 XCode 中)。
我想做一些与属性相关的宏诡计。
抛开宏的原因放在首位(因为它与这个问题并不是特别相关,除了提供动机之外),我最大的绊脚石是 IB 在识别出口的方式上非常简单。如果我使用宏,我无法说服 IB 发现网点。
例如,如果我想替换:
@property (retain, nonatomic) IBOutlet UIWindow* window;
使用我的宏,它看起来像这样:
ECPropertyDefine(window, UIWindow*, retain, nonatomic);
不幸的是,很明显,默认情况下 IB 不执行任何宏扩展,因此无论我将 IBOutlet 放入宏定义中,还是放入我调用宏的参数中,都不知道这是一个插座与。
我只是想知道在 IB 的某个地方是否可能存在一些晦涩的钩子,它允许脚本在 IB 扫描源文件时对其进行预处理。
【问题讨论】:
标签: objective-c cocoa xcode interface-builder