我需要一種將塊數參數動態應用於塊的方法。該塊可以具有任何類型的任意數量的參數。動態地將參數數組應用於塊
我知道數組中參數的數量和類型會一致。
我已經看過將這個塊扔到CTBlockLiteral
。這提供了對invoke
方法的訪問。
帶有簽名(void(^)(NSString* arg0,NSString* arg1))
的塊可以這樣調用:blockRef->invoke(nil, @"foo", @"bar");
。
這怎麼可以推廣到任何數量的參數,其中arity和類型在編譯時不知道?
編輯:爲了清楚,不,我不想改變我的塊接受可變參數,數組或其他。這些塊可以有他們想要的任何簽名,並且我有一個數組中的參數。我如何將這些參數傳遞給塊?這感覺就像我想要的東西類似於Javascript的apply
函數。
使用var ARGS? https://gist.github.com/JacobOscarson/2783763 – 2014-10-20 08:13:05
@GuillaumeAlgis不,該塊需要幸福地意識到這一切已經發生。 – funkybro 2014-10-20 09:14:34
聽起來像你問「我如何在Objective-C中使用塊來重現Javascript'apply'功能?」塊不適合這個。可能是'NSInvocation',取決於你想要做什麼。你能描述一下你試圖解決的更廣泛的商業問題嗎? – Rob 2014-10-21 03:38:07