2017-09-21 63 views
0

我有一个用Objective-C编写的方法,我用Swift代替。但是,我不想更改方法签名,因为它在多个位置使用。我正在使用相同的签名在Swift中编写它的新版本,应该从Obj-C代码中调用它。如何从Objective-C调用Swift可变参数方法?

这是方法。 +(void)printLog:(NSString *)msgToPrint,...;

我想要一个这个方法的Swift版本,它将从Obj-C代码中调用。先谢谢您的帮助。

+0

(https://developer.apple。 COM /库/内容/文档/雨燕/概念/ BuildingCocoaApps/InteractingWithCAPIs.html#// apple_ref/DOC/UID/TP40014216-CH8-ID207)。如果您只想编写自己的Swift可变参数函数,请参见[The Swift Programming Language:Functions](https://developer.apple.com/library/content/documentation/Swift/Conceptual/Swift_Programming_Language/Functions)的_Variadic Parameters_部分。 HTML#// apple_ref/DOC/UID/TP40014097-CH10-ID166)。 – Rob

+0

或者,根据您在此功能中所做的操作,这可能是考虑转换为[统一日志记录和活动跟踪](https://developer.apple.com/videos/play/wwdc2016/721/)的好时机),它比传统的日志记录机制提供了许多优点。 – Rob

回答

0

如果你想调用的OBJ-C可变参数函数,见_Variadic Functions_在[使用C API的交互:功能]这将是类方法是这样

class func printLog(msgToPrint: String, _ args: CVarArg...) -> Void 
{ 

} 
+0

是的,它将成为Swift中的类函数。但是,这里的问题是可变参数。如果您观察方法签名,则最后一个参数是可变参数。那是什么导致了问题。尽管我定义了该函数,但它在可变参数的Obj-C代码中未被识别。 –

+0

我更新了我的答案,并请看看这个网站https://stackoverflow.com/questions/24195796/how-do-you-call-an-objective-c-variadic-method-from-swift –

相关问题