2012-07-24 113 views
2

我想從包含vargs參數列表的方法調用選擇器。有沒有辦法動態地向選擇器提供多個參數的變量?將可變數量的參數傳遞給選擇器

+0

我很難理解你的意思。在具有'va_list'參數的方法內部,您想要a)調用另一個採用'va_list'的方法? 2)使用'performSelector:'或類似的方法,並使用另一個採用'va_list'的方法的選擇器? 4)? 「NSInvocation」可能是答案,但用更清晰的問題提供更詳細的解決方案會更容易。 – 2012-07-24 23:52:53

+0

我在想你可以通過一個可變的參數列表來執行選擇器,但我認爲你不能。它看起來只有3個選項:0個參數,1個參數或2個參數。如果是這種情況,最明智的選擇是提供一些重載方法,然後在其他情況下使用字典(如建議)。 – Brian 2012-07-24 23:55:11

+0

您是否在尋找'objc_msgSend()',也許? – 2012-07-25 01:04:59

回答

2

不幸的是,在使用performSelector時,傳遞多個參數的唯一選擇是傳入NSArray或NSDictionary等。顯然,您必須更改接收方法的構造函數以接受新的參數存儲對象。

另外,你可以看看使用NSInvocation

+2

「傳遞給performSelector的1或2個參數應該足夠用於任何人」 - Steve Jobs,1996 – Brian 2012-07-25 00:01:21

1

你可以傳遞一個NSMutableDictionary,你可以有許多參數。