将具有未知签名的块作为目标c中的参数传递

时间:2014-06-24 18:37:35

标签: objective-c graph objective-c-blocks

我制作图表,我想制作一个系统,用于指定沿边缘节点之间转换的条件。我不确定方法签名应该是什么样子,因为不同的转换会有不同的参数。

所以感兴趣的两个功能是:

-addEdge(NSString* firstState, NSString* secondState,NSString* edgeName, block (?))

-(bool)transition(NSString* edgeName, parameters (?) ... )

addEdge()传入一个块,该块定义firstState和secondState之间的转换条件,并为其指定名称。

transition()接受参数列表并将它们应用于与边名相关联的块。

在这种情况下,方法签名应该是什么样的?

2 个答案:

答案 0 :(得分:0)

可以接受变量参数,虽然接受NSArray可以说更简单。

typedef void(^VarArgsBlock)(int argumentLength, ...);

答案 1 :(得分:0)

您无法使用任意参数声明块。但是你总是可以添加 id 参数,这是你想要的。它可能是 NSArray 或您定义的某些特定类的对象,您想要的任何内容。因此,您不需要任何 varargs