Objective c 你怎么投积木?

Objective c 你怎么投积木?,objective-c,objective-c-blocks,Objective C,Objective C Blocks,我做了一组积木。我想从数组中执行一个单独的块,但我很难找到转换和调用该块的语法 void (^hiBlock)() = ^void() { NSLog(@"Hi"); }; void (^byeBlock)() = ^void() { NSLog(@"Bye"); }; NSArray *blocks = @[hiBlock, byeBlock]; (void (^)(void))blocks[0](); 考虑使用t

我做了一组积木。我想从数组中执行一个单独的块,但我很难找到转换和调用该块的语法

 void (^hiBlock)() = ^void() {
        NSLog(@"Hi");
    };

    void (^byeBlock)() = ^void() {
        NSLog(@"Bye");
    };

    NSArray *blocks = @[hiBlock, byeBlock];
    (void (^)(void))blocks[0]();

考虑使用
typedef
使您的生活更轻松。以下工作:

typedef void (^HiBlockType)();

HiBlockType hiBlock = ^{ NSLog(@"Hi"); };
HiBlockType byeBlock = ^{ NSLog(@"Bye"); };

NSArray *blocks = @[ hiBlock, byeBlock ];
((HiBlockType)blocks[0])();

还请注意,这本质上是
dispatch_block_t
,因此您可以使用它而不是
HiBlockType

缺少括号-
((void(^)(void))块[0])!!!那很容易谢谢你!