Wie schreibe ich Objective-C Blöcke inline?

7

Ich versuche eine binäre Suche unter Verwendung von objective-c-Blöcken zu implementieren. Ich verwende die Funktion indexOfObject:inSortedRange:options:usingComparator: . Hier ist ein Beispiel.

%Vor%

Ich frage mich, wie ich einen extern definierten objektiven c-Block mit der oben genannten Funktion verwenden kann. Hier sind zwei Vergleichsfunktionen.

%Vor%

Diese werden in Bezug auf die folgenden Deklarationen geschrieben, die in NSObjCRuntime.h gefunden werden können.

%Vor%     
JJD 22.10.2010, 10:30
quelle

2 Antworten

21

Sie können einen Block als globale Variable definieren, um einen ähnlichen Effekt zu erzielen.

%Vor%

Dann in der Methode, die den Vergleich durchführt:

%Vor%

Um den Block in eine Kopfzeile einzufügen, für den externen Gebrauch:

%Vor%     
ughoavgfhw 17.01.2011, 03:36
quelle
2

Ich weiß, das ist alt, aber ich bin gerade darüber gestolpert und ich habe versucht, an meinen Blöcken foo zu arbeiten, also geht hier ...

Ich habe eine Methode erstellt, die Ihren NSComparator als Block zurückgibt. Es sieht so aus:

%Vor%

Ich konnte dann Ihren Beispielcode ausführen, indem ich die Ausführung der binären Suche in

ändere %Vor%

Ich habe eine sehr ähnliche Ausgabe wie die ursprüngliche Implementierung mit der Blockdefinition innerhalb des Methodenaufrufs erhalten.

    
Adam 17.01.2011 02:06
quelle