gpt4 book ai didi

macros - Swift 替换 Objective-C 宏

转载 作者:行者123 更新时间:2023-11-28 09:19:04 25 4
gpt4 key购买 nike

我正忙于用 Swift 重写一个应用程序,并想将以下宏转换为 Swift 代码。

#define FLOG(format, ...)               NSLog(@"%@.%@ %@", [self class], NSStringFromSelector(_cmd), [NSString stringWithFormat:format, ##__VA_ARGS__])

我如何将其定义为 Swift 函数,以便我可以在任何地方使用 if 进行调试日志记录,或者是否有其他方法可以实现相同的目的?

最佳答案

最简单的方法可能是利用字符串插值并使用:

func FLOG(message:String, method:String = __FUNCTION__) {
println("\(method): \(message)")
}

那么你的用法类似于:

FLOG("Illegal value: \(value)")

将方法参数默认为 __FUNCTION__ 意味着它通常会被调用函数名称替换。您可以使用的其他自动变量包括 __FILE____LINE____COLUMN__。很遗憾,__PRETTY_FUNCTION__ 不再可用。

如果您想要比字符串插值更多地控制消息的格式,请查看 this question它演示了如何在 Swift 中简化对 printf 样式格式的访问,并且可以让您执行以下操作:

FLOG("Illegal value: %x" % [value])

另见 this post来自 Apple,在 assert

中使用 __FILE____LINE__

关于macros - Swift 替换 Objective-C 宏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26186203/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com