我有以下功能:
func myNSLog(_ givenFormat: String, _ args: CVarArg..., _ function:String = #function) {
let format = "\(function): \(givenFormat)"
NSLog(format, args)
Run Code Online (Sandbox Code Playgroud)
导致以下错误:'NSLog'已明确标记为不可用(Foundation.NSLog)
在文档中,它明确列为可用.我错过了什么?
与C类似,您不能将变量参数列表直接传递给另一个函数.你必须创建一个CVaListPointer(Swift等价物va_list)并将其传递给NSLogv变体:
func myNSLog(_ givenFormat: String, _ args: CVarArg..., _ function:String = #function) {
let format = "\(function): \(givenFormat)"
withVaList(args) { NSLogv(format, $0) }
}
Run Code Online (Sandbox Code Playgroud)
(Swift 3代码.)