Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何从Objective-C宏调用变量方法?_Objective C_Macros_Variadic Functions - Fatal编程技术网

如何从Objective-C宏调用变量方法?

如何从Objective-C宏调用变量方法?,objective-c,macros,variadic-functions,Objective C,Macros,Variadic Functions,我创建了变量法的va_列表版本: +(void)myFunc:(NSString *)message args:(va_list)args; 并创建了调用上述函数的宏TESTLOG #define TESTLOG(x,...) [MyExample myFunc:(x), ##__VA_ARGS__] 问题是,当我尝试调用TESTLOG宏时,出现了一个错误: TESTLOG("test"); TESTLOG(@"test",@"test1"); 期望表达式 我怎样才能解决这个问题?我试图用

我创建了变量法的va_列表版本:

+(void)myFunc:(NSString *)message args:(va_list)args;
并创建了调用上述函数的宏
TESTLOG

#define TESTLOG(x,...) [MyExample myFunc:(x), ##__VA_ARGS__]
问题是,当我尝试调用
TESTLOG
宏时,出现了一个错误:

TESTLOG("test");
TESTLOG(@"test",@"test1");
期望表达式

我怎样才能解决这个问题?我试图用
替换
args:(va_list)args
,但在我的情况下,我需要使用va_list和宏


我认为我的问题在于宏中的定义。

不能将
\uu VA\u ARGS\uu
宏与
VA\u列表
参数一起使用。您的Objective-C方法需要定义为:

+ (void)myFunc:(NSString *)message, ... ;
然后,您的宏可以是:

#define TESTLOG(x,...) [MyExample myFunc:(x), __VA_ARGS__]

你是对的,但我的情况更复杂。。。在这种情况下,我可以从objective-c代码运行这个函数,这是可以的,但是swift呢?如何从swift代码调用此函数(MyExample.myFunc)?用变量法?我没有成功地从swift代码中调用变量方法,xcode无法识别函数(MyExample.myFunc)。你能解释一下如何声明调用myFunc的swift函数吗?这是一个完全不同的问题。你应该通过接受答案来结束这个问题,然后发布一个新问题,询问如何从Swift调用客观C变量方法。