Wie Sie vielleicht wissen, nehmen Blöcke -invoke
:
void(^foo)() = ^{
NSLog(@"Do stuff");
};
[foo invoke]; // Logs 'Do stuff'
Ich würde gerne Folgendes tun:
void(^bar)(int) = ^(int k) {
NSLog(@"%d", k);
};
[bar invokeWithParameters:7]; // Want it to log '7', but no such instance method
Das gewöhnliche argumentlose -invoke
arbeitet an bar
aber er gibt einen unsinnigen Wert aus.
Ich kann weder eine direkte Nachricht dieser Art finden, die ich an einen Block senden kann, noch kann ich die Originaldokumentation finden, die beschreibt, wie Blöcke -invoke
. Gibt es eine Liste der von den Blöcken akzeptierten Nachrichten?
(Ja, ich habe versucht, die class_copyMethodList
um eine Liste von Methoden aus der Laufzeitumgebung zu extrahieren; es scheint keine zu geben).
Edit : Ja, ich weiß auch, dass man den Block auf die übliche Weise aufrufen kann ( bar(7)
;). Was ich wirklich nach ist ein Selektor für eine Methode, die ich in Bibliothekscode, die nicht Blöcke (per-se) nehmen einspeisen kann.