将新结构作为参数传递

时间:2011-07-04 04:05:01

标签: objective-c

我有这样的功能:

- (void)addBalloon:(COLOR)color:(VELOCITY)velocity:(LOCATION)location 

其中COLOR是枚举,VELOCITY和LOCATION是常量头文件中定义的结构。

VELOCITY和LOCATION都存储两个整数,x和y。

调用此方法时,我会这样称呼它:

VELOCITY vel;
LOCATION loc;

vel.x = 100.0;
vel.y = 0.0;

loc.x = 10.0;
loc.y = 10.0;

[self addBalloon:Red:vel:loc];

但对我来说,这看起来很混乱。我想在线上创建结构时直接在一行中调用该函数。

这是我的问题:我不确定是否可以使用#define来完成...但是如果它不能...是创建一个返回VELOCITY或LOCATION并接受输入x的函数的唯一其他可行选项,和y?

我想做以下事情:

[self addBalloon:Red:VELOCITY(100.0, 0.0):LOCATION(10.0, 10.0)];

1 个答案:

答案 0 :(得分:7)

您可以将C99语法用于指定的初始化程序:

[self addBalloon:Red:(VELOCITY){100.0, 0.0}:(LOCATION){10.0, 10.0}];

[self addBalloon:Red:(VELOCITY){.x=100.0, .y=0.0}:(LOCATION){.x=10.0, .y=10.0}];