self.myArray = @[ [^{ NSLog(@"a"); } copy],
[^{ NSLog(@"b"); } copy]];
... Später ....Wie listen Sie über ein Array von Blöcken auf?
[self.myArray enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) {
// This syntax is wrong, but I hope you get my intention
void (^) (void) block = obj;
block();
}];
Wie werfen Sie den Block aus, wenn über sie aufzählt? (Bonus, wenn Sie es ohne typedef tun können)
+ 1 für die Argumentliste zu ändern - ich wusste nicht, dass Sie dies tun könnte! – Robert
können Sie NSOperationQueue und - [NSOperation operationWithBlock:] anstelle des direkten Speicherns von Blöcken im Array verwenden. Wenn es eine Klasse für genau diesen Zweck (mit der Möglichkeit zum Starten/Stoppen der Ausführung) gibt, die von Apple-Entwicklern entwickelt wurde, dann sollten Sie definitiv einen verwenden. –