2016-07-12 13 views
0

Klingt dumm, aber ...Aufruf rasche Methode von Objective C

ich eine schnelle Klasse mit einem öffentlichen Verfahren habe

class PlayerVC: UIViewController { 
    func retrievePixelBufferToDraw(strongSelf: PlayerVC) -> CVPixelBuffer? { 
    ... 
    return pixelBuffer 
    } 
} 

Ich versuche, es von einer Objective-C-Klasse zu nennen (Haftungsausschluss ich bin ein Anfänger mit Objective-C und ich konnte die Antwort online auf ..) wie finden:

PlayerVC* VC = self.playerController; 
CVPixelBufferRef pixelBuffer = [VC retrievePixelBufferToDraw:VC]; 

Aber die Syntax ist nicht korrekt. (No visible @interface for 'PlayerVC' declares the selector 'retrievePixelBufferToDraw:') Ich habe eine Vielzahl von Belichtungsreihen versucht, Doppelpunkte, Variablennamen usw.

+1

#import " -Swift.h" dann ist der Methodenname 'retrievePixelBufferToDrawWithStrongSelf' ... Aktivieren Sie das Feld "Objective-C Generated Interface Header Name" in Ihren Build-Einstellungen – RJE

+0

danke, ich habe es dank der automatisch vervollständigen. Wissen Sie, warum der Methodenname und der Parametername in 'retrievePixelBufferToDrawWithStrongSelf' zusammengeführt werden? – Guig

+1

automatisch generierten ObjC Header wird Methoden Namen wie das machen. Dasselbe gilt auch für den anderen Weg. z.B. Wenn Ihre ObjC-Klasse eine Methode hat, sagen wir: "initWithName:" swift sieht sie (wenn Sie richtig überbrücken) als func init (name :) – RJE

Antwort

2

Aus irgendeinem Grunde ist die Antwort:

PlayerVC* VC = self.playerController; 
CVPixelBufferRef pixelBuffer = [VC retrievePixelBufferToDrawWithStrongSelf:VC]; 

Keine Ahnung, wo die retrievePixelBufferToDrawWithStrongSelf herkommt, vielleicht aus dem Auto Brücken zwischen Swift und Objective C. Das klingt schrecklich. Sowieso..!

+2

Es kommt von 'retrievePixelBufferToDraw (strongSelf: PlayerVC)' – WMios