如何执行存储在NSDictionary中的块?

sud*_*ud0 9 cocoa block nsdictionary

我对块有点新,需要一些帮助.我想在一个块中存储一个块,NSDictionary并在它被访问时执行所述块key.这是我迄今为止的一个例子.

NSDictionary *blocks = [NSDictionary dictionaryWithObjectsAndKeys:
                              ^{NSLog(@"Log Block 1");}, @"Block1",
                              ^{NSLog(@"Log Block 2");}, @"Block2",
                              nil];
Run Code Online (Sandbox Code Playgroud)

然后我通过使用来列举字典keyEnumerator.我知道块被正确存储,因为我NSLog(@"%@", [blocks objectForKey:key]);在枚举期间调用并获取<__NSGlobalBlock__: 0x100003750>.所以我知道我可以访问它,但是我怎么能在这一点上执行呢?

jrt*_*c27 15

试试这个:

void(^myAwesomeBlock)() = [blocks objectForKey:key];
myAwesomeBlock();
Run Code Online (Sandbox Code Playgroud)

  • 它每次执行,但它在复制时捕获外部变量,而不是在执行时捕获. (2认同)