3
我在一個庫中的方法,看起來像這樣的objc方法:如何將數組傳遞給需要變參(如...')
- (id)initWithSomeObjects:(NSString *)something, ... NS_REQUIRES_NIL_TERMINATION;
我真的很喜歡叫它用一個數組而不是var args,因爲我想要傳遞的對象的數量是可以改變的。
有沒有辦法,使用performSelector或NSInvocation或objc_msgSend或其他什麼,我可以調用var args方法,參數來自數組?
我在這裏找到了一種方法,但它不能在xcode4 +下編譯 - http://www.cocoawithlove.com/2009/05/variable-argument-lists-in-cocoa.html – Chris
什麼是編譯錯誤? – Wain
該程序不會做你想做的。這是將'NSArray'的內容傳遞給'va_list'。你的方法不需要'va_list',它需要可變數目的參數。一個'va_list'是它自己的類型 - 只是一個字節緩衝區,但它是一個單獨的參數。你的方法看起來像' - (id)initWithSomeObjects:(va_list)objs'比較' - [NSString initWithFormat:]'和' - [NSString initWithFormat:arguments:]'。 –