可变参数方法包装器iOS Objective-C

时间:2018-10-10 12:18:18

标签: ios objective-c wrapper variadic

我正在创建一个框架,并在为该类做包装时卡住了

logger.h 具有以下方法

-(void) logError:(nonnull NSString *) info, ...;

我包装了 logger.h 文件名 Mlogger.h

包装文件 Mlogger.h 具有相同的原型

-(void) logError:(nonnull NSString *) info, ...;

我的 Mlogger.m 文件的实现方式为

-(void) logError:(nonnull NSString *) info, ... {
    va_list args;
    va_start(args, info);
    [[Logger sharedManager] logError:info];
      //LogError(info,args); //also tried with macro
    va_end(args);
}

宏在 logger.h 中定义:

#define LogError(format, ...) [[Logger sharedManager] logError:format , ##__VA_ARGS__ ];

我已导入包装器类 Mlogger.h ,并执行类似的调用

[logger logDebug:@"Initialized successfully"];
[logger logDebug:@"URL: %@",@"www.google.com"];

第一行打印完美,但第二行打印   URL:记录器:0x604000226cc0 ..

预期输出为   URL:www.google.com

  

我的实现是否正确?而不是我该如何传递   可变参数?

0 个答案:

没有答案