2011-07-04 110 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

相關問題