2017-09-21 4 views
0

J'ai une méthode écrite en Objective-C, que je remplace par du code Swift. Mais, je ne veux pas changer la signature de la méthode car elle est utilisée en nombre d'endroits. J'en écris une nouvelle version dans Swift avec la même signature, qui devrait être appelée à partir du code Obj-C.Comment appelez-vous une méthode de paramétrage variadique Swift à partir d'Objective-C?

C'est la méthode. + (void) printLog: (NSString *) msgToPrint, ...;

Je veux une version rapide de cette méthode, qui sera appelée à partir du code Obj-C. Merci d'avance pour l'aide.

+0

Si vous voulez appeler la fonction Obj-C variadique, voir _Variadic Fonctions_ dans [Interagir avec les API C: Fonctions] (https://developer.apple. com/bibliothèque/contenu/documentation/Swift/conceptuel/BuildingCocoaApps/InteractingWithCAPIs.html #/apple_ref/doc/uid/TP40014216-CH8-ID207). Si vous voulez juste écrire votre propre fonction variée de Swift, voir la section _Variadic Parameters_ de [The Swift Programming Language: Fonctions] (https://developer.apple.com/library/content/documentation/Swift/Conceptual/Swift_Programming_Language/Functions. html # // apple_ref/doc/uid/TP40014097-CH10-ID166). – Rob

+0

Ou, selon ce que vous faites dans cette fonction, cela pourrait être un bon moment pour envisager la transition vers [Unified Logging and Activity Tracing] (https://developer.apple.com/videos/play/wwdc2016/721/), qui offre de nombreux avantages par rapport aux mécanismes d'exploitation traditionnels. – Rob

Répondre

0

Ce serait la méthode de classe comme celui-ci

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

} 
+0

Oui, ce sera une fonction de classe dans Swift. Mais, le problème ici est de paramètres variadiques. Si vous observez la signature de la méthode, le dernier paramètre est variadique. C'est ce qui cause le problème. Bien que je définisse la fonction mais n'est pas reconnue dans le code Obj-C du paramètre variadique. –

+0

J'ai mis à jour ma réponse et s'il vous plaît jeter un oeil ce site https://stackoverflow.com/questions/24195796/how-do-you-call-an-objective-c-variadic-method-from-swift –