2011-07-04 36 views
7

Tôi có một chức năng như vậy:Đi qua cấu trúc mới như tham số

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

đâu COLOR là một enum, và vận tốc và vị trí được cấu trúc quy định tại một hằng số tiêu đề tập tin ..

vận tốc và VỊ TRÍ cả lưu trữ hai ints, x và y.

Khi gọi phương pháp này, tôi sẽ gọi nó là như vậ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]; 

Nhưng với tôi, điều này dường như thiếu tổ chức. Tôi muốn gọi hàm trực tiếp trong một dòng khi tạo cấu trúc trên dòng ..

Đây là câu hỏi của tôi: Tôi không chắc chắn nếu điều này có thể được thực hiện bằng cách sử dụng # define ... nhưng nếu nó không thể .. là lựa chọn duy nhất khả thi khác tạo ra một hàm trả về VELOCITY hoặc LOCATION và lấy đầu vào x, và y?

Tôi muốn làm điều gì đó như sau:

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

Hãy có văn bản giữa dấu hai chấm. Xem cách bạn không có một phần của tên phương thức trước mỗi dấu hai chấm? Không có nơi nào trong SDK thực hiện điều này xảy ra, do đó bạn không nên tự mình làm điều đó. (http://i.stack.imgur.com/DCu5T.png) –

Trả lời

7

Bạn có thể sử dụng cú pháp C99 cho initialisers định:

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

hoặc

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

wow cảm ơn, điều đó thật hoàn hảo. – Dalisto1

Các vấn đề liên quan