【发布时间】:2011-06-28 01:43:31
【问题描述】:
ForwardInvocation 确实存在,但它很慢并且有令人讨厌的编译器警告问题。这让我开始思考——有没有办法使用宏来快速实现一堆从另一个对象获取相关属性的 getter 方法?
例如,如果我有一个 Car 对象,它可能想要实现以下内容:
Car.h:
@class SparkPlug;
@class Engine;
. . .
-(int) nPistons;
-(float) horsepower;
-(SparkPlug*) sparkPlug;
Car.m:
. . .
-(int) nPistons {
return self.engine.nPistons;
}
-(float) horsepower {
return self.engine.horsepower;
}
-(SparkPlug*) sparkPlug {
return self.engine.sparkPlug;
}
问题——是否可以设置一些宏,以便通过在某处更改 one,我可以在头文件和实现文件中添加另一个这样的方法?
例如MagicForwardingMacro (nPistons, int, engine);
理想情况下,如果我以后想使用类似的策略从 Person 的birthCertificate 中获取一个 Person 的 firstName、lastName、placeOfBirth 和 dateOfBirth 属性,那么这些宏将是可重用的。
【问题讨论】:
-
我不太明白你想做什么。您是否希望宏定义一个访问器方法,该方法从对象中获取值,作为参数传递给宏?
-
我不想写标题和实现,我只想在某处写 MagicForwardingMacro(nPistons, int, engine) 并导致 -(int) nPistons;出现在标题中,并且 -(int) nPistons { return self.engine.nPistons; } 出现在实现中。
-
在当前版本的 XCode 中无法影响宏中的多个文件。并且由于 Applescript 目前在 XCode 中被破坏,你很不走运。对不起。
标签: iphone ios macros message-forwarding