Search code examples
objective-cnsdictionaryblock

How to invoke block in NSDictionary?


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

Xcode reports the error Called object type 'id' is not a function or function pointer when I invoke the block in NSDictionary.

How I can invoke block stored in NSDictionary?


Solution

  • You should create a local variable to cast id to block type.

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