Swift中使用NSLog的问题

Posted 大熊猫侯佩

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Swift中使用NSLog的问题相关的知识,希望对你有一定的参考价值。

在Swift中如果想要以如下方式执行NSLog,则编译器必定抱怨:

class Foo {}
NSLog("%@",Foo())

因为Foo是原生Swift类不是继承自NSObject,而NSLog需要其Description方法,所以我们必须使Foo派生自NSObject,然后重载Description方法:

class Foo:NSObject {
    override var description: String {return "大熊猫侯佩"}
}

NSLog也支持字符串内插显示,这时你可以不从NSObject中派生,你只要遵守CustomDebugStringConvertible协议即可:

class Tom:CustomDebugStringConvertible{
    var debugDescription: String {return "勒布朗-詹姆斯"}
}

NSLog("\(Tom())")

以上是关于Swift中使用NSLog的问题的主要内容,如果未能解决你的问题,请参考以下文章

Swift:摆脱时间戳 NSLog()

我可以将 NSLog 与 Swift 结构一起使用吗?

使用 NSLog 记录 Swift 枚举

如何使用 Swift 使用此代码片段为 iOS 应用程序初始化 SDK?

为啥 Swift 中的 print() 不会在目标 C 中将时间戳记录为 NSLog

Swift新async/await并发中利用Task防止指定代码片段执行的数据竞争(Data Race)问题