如何调用 NSDictionary 中的块?

How to invoke block in NSDictionary?

NSMutableDictionary* actions = [[NSMutableDictionary alloc] init];
actions[@"run"] = ^ () {
  NSLog(@"Hello");
};
actions[@"run"]();

Xcode 当我调用 NSDictionary 中的块时报告错误 Called object type 'id' is not a function or function pointer

如何调用存储在 NSDictionary 中的块?

您应该创建一个局部变量以将 id 转换为块类型。

void(^block)(void) = [actions objectForKey:@"run"];
if(block)
{
   block();
}

只是转换的问题,试试冗长的版本:

(void) (^dictBlock)(void)) = actions[@"run"];
dictClock()