返回没有typedef的块的块

时间:2012-06-06 21:09:16

标签: objective-c objective-c-blocks

我不明白如何在不使用typedef的情况下做到这一点:


typedef void(^HLBlock)(void);

- (void)whatever
{
    HLBlock (^genBlock)(int) = ^(int tryCount){
        HLBlock b1 = [[^{
            NSLog(@"tryCount=%i", tryCount);
        } copy] autorelease];
        return b1;
    };

    genBlock(10);
}

我需要将HLBlock声明为void(^)(void)的typedef似乎很愚蠢,但对于我的生活,我无法弄清楚如何在没有typedef的情况下执行此操作。 genBlock的正确返回类型是什么?

谢谢! 杰米

1 个答案:

答案 0 :(得分:9)

这是没有typedef的语法,但我认为它是如此难以理解,因此强烈推荐typedef:

void(^(^genBlock)(int))() = ^(int tryCount){
  void (^b1)() = ^{
    NSLog(@"tryCount=%i", tryCount);
  };
  return b1;
};

void(^aBlock)() = genBlock(10);
aBlock();