Schnelle Blöcke funktionieren nicht

7

Ich habe versucht, herauszufinden, wie JavaScript in swift zu verwenden ist. Ich stoße auf Probleme, aber wenn ich mit Blöcken als Argumente umgehen muss, scheint der Block sofort ausgeführt zu werden und die Argumente erhalten den Rückgabewert des Blocks. Was mache ich falsch?

Arbeitsziel C-Code:

%Vor%

Was ich versucht habe:

1:

%Vor%

2:

%Vor%

3:

%Vor%

Fehle ich hier etwas oder ist das nur ein Fehler in Swift?

Bearbeiten:

Ich habe jetzt auch Vorschläge aus Cast closures / blocks

ausprobiert %Vor%

und dann

%Vor%

Diese Lösung lässt mich kompilieren, aber ich bekomme einen Laufzeitfehler:

%Vor%     
hannesr 06.07.2014, 12:12
quelle

2 Antworten

26

Es hat etwas damit zu tun, wie schnell die Schließung funktioniert. Sie müssen @convention(block) verwenden, um zu kommentieren, dass der Abschluss ObjC-Block ist. Verwenden Sie unsafeBitCast , um die Umwandlung zu erzwingen

%Vor%

von REPL

%Vor%     
Bryan Chen 29.07.2014, 11:05
quelle
1

Ich habe eine funktionierende Demo unter:

Und hier ist der Teil, der die Blockregistrierung implementiert:

%Vor%

Sie benötigen einen sehr kleinen objc-Code und Bridging-Header, damit es funktioniert. Details finden Sie im Repository.

    
dankogai 29.07.2014 22:15
quelle

Tags und Links