有没有办法将可变参数args传递给dispatch异步块?在其他的话,我可以将我的va_list传递给disatch_async块吗?
像这样的东西
void someFunction (NSObject * format, ...)
{
va_list argList;
va_start(argList, format);
dispatch_async(some_queue(), ^{
// Use it here
});
va_end(argList);
}
或者像这样
void someFunction (NSObject * format, ...)
{
dispatch_async(some_queue(), ^{
va_list argList;
va_start(argList, format);
// Use it here
va_end(argList);
});
}
解决方法是在发送之前将其作为对象,这不是我想要的。
答案 0 :(得分:2)
va_start
将在format
(argList)中保留其第一个参数(va_list
)地址,然后通过移动指针获取其他参数,但是如果函数({{ 1}})返回,该地址的内存将随时被覆盖,因此访问其值并且结果未定义是危险的。
someFunction