Objective C 如果不为 NULL,使用可变参数列表调用块的方法

Objective C Method to Invoke block if not NULL, with variadic argument list

我正在尝试编写一个方法,该方法首先检查块是否不为 NULL,如果不为 NULL,则使用 variadic 参数调用块。我是新手。

我遇到以下代码的各种错误:

-(void)invokeBlockIfNotNull:(void(^)(void))blockToInvoke withArguments:(id) firstArgument,...
{
    if(blockToInvoke != NULL)
    {
        blockToInvoke(##__VA_ARGS__);
    }
}

我遇到了一个做同样事情的宏,但我想看看它在 objective c 方法中的样子。

你不能。您可以编写一个以 va_list 作为参数的块。我会说这是误导,当你保存的只是一个 if 语句。

您的函数无法工作,因为该块被明确声明为没有参数。

即使你让它与一个带有可变参数列表的块一起工作,你也不能将它用于带有一些固定参数列表的块。可变参数列表和固定参数列表不兼容。