Swift

2016-04-27 20 views
5

'da CVaListPointer parametreleriyle yöntem nasıl çağırılır Aşağıdaki yöntemi nasıl çağırmalıyım? Yöntem, günlükleri basan bir sınıfa aittir.Swift

NSLog(@"Message %@ - %@", param1, param2); 

Herhangi fikirler: Objective-C şu şekilde görünecektir elde etmek istiyorum ne

func log(format: String!, withParameters valist: CVaListPointer) 

?

cevap

10

CVaListPointerva_list tip Swift eşdeğerdir ve withVaList() kullanarak [CVarArgType] diziden oluşturulabilir.

Örnek:

func log(format: String!, withParameters valist: CVaListPointer) { 
    NSLogv(format, valist) 
} 

let args: [CVarArgType] = [ "foo", 12, 34.56 ] 
withVaList(args) { log("%@ %ld %f", withParameters: $0) } 

Çıkış:

 
2016-04-27 21:02:54.364 prog[6125:2476685] foo 12 34.560000 

için Swift 3,CVarArg ile CVarArgType değiştirin.

+0

'CVaListPointer' yerine' CVarArg' gerektiren bir işlev için ne önerirsiniz? – kelin

+0

"CVarArgType", "CVarArg" ile değiştirilirse, derleyici türden dolayı bir hata gösterecektir ve "CVarArg" öğesini "CVarArgType" öğesine çevirmeye çalışırsanız, bir kilitlenme alırsınız. – kelin