Ios exc_bad_指令exc_i386_invop当我将va_列表发送到其他函数时

Ios exc_bad_指令exc_i386_invop当我将va_列表发送到其他函数时,ios,objective-c,variadic-functions,Ios,Objective C,Variadic Functions,我正在为iphone开发。 我有日志功能,这个很好用 void _log_p(NSString* format, ...) { va_list argList; va_start(argList, format); NSString* text = [[NSString alloc] initWithFormat:format arguments:argList]; va_end(argList); } 但当我尝试将argList发送到另一个函数时,我得到了ex

我正在为iphone开发。 我有日志功能,这个很好用

void _log_p(NSString* format, ...)
{
    va_list argList;
    va_start(argList, format);
    NSString* text = [[NSString alloc] initWithFormat:format arguments:argList];
    va_end(argList);
}
但当我尝试将argList发送到另一个函数时,我得到了exc_bad_指令exc_i386_invop

void _log(LogLevel level, NSString* format,...)
{
    va_list argList;
    va_start(argList, format);
    NSString* text = [[NSString alloc] initWithFormat:format arguments:argList];
    va_end(argList);
}
void _log_p(NSString* format, ...)
{
    va_list argList;
    va_start(argList, format);
    _log(LogLevelPublic, format, argList);
    va_end(argList);
}
在行NSString*text=[[NSString alloc]initWithFormat:format arguments:argList]上


我做错了什么?

一般来说,不可能转发可变参数。请参阅:

我不是目标C方面的专家,但是:您不能将
va_列表
转发给另一个通过
获取可变参数的函数。您需要接受
va_列表
的函数的不同版本。例如
printf
vprintf