ios - 可变参数方法包装器 ios Objective-c
问题描述
我正在创建一个框架并在为该类制作包装器时卡住了
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 : Logger: 0x604000226cc0..
预期输出是 URL:www.google.com
我的实现是否正确?而不是那么我如何传递可变参数的值?
解决方案
推荐阅读
- powershell - 使用密码压缩文件夹作为powershell
- tableau-api - 混合数据源中的表计算
- tableau-api - 更改日期范围时的 Tableau 常量参考线问题
- c# - 如何在我的单人游戏中设置收集金币的限制?
- javascript - 你能检查点击一个元素是否有什么作用吗?喜欢带你到另一个页面吗?
- azure - 发布管道 - 在 docker 阶段之间共享工件
- angular - Angular中的表单值返回空
- cobol - COBOL - 了解 SET MYSELF
- vue.js - 来自组件的Vue数据vue对象变量
- sql - Running SSRS Query gives blank results