2011-07-04 78 views
7

我有一个函数,如下所示:传递新结构作为参数

- (void)addBalloon:(COLOR)color:(VELOCITY)velocity:(LOCATION)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)]; 
+0

请有之间的文本冒号。看看每个冒号之前你没有方法名的一部分吗?没有在SDK中发生这种情况,所以你不应该自己做。 (http://i.stack.imgur.com/DCu5T.png) –

回答

7

可以使用C99语法指定initialisers:

[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}]; 
+1

哇谢谢,这是完美的。 – Dalisto1

相关问题