3

如果不使用 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 的正确返回类型是什么?

谢谢!杰米

4

1 回答 1

9

这是没有 typedef 的语法,但我认为它是如此难以阅读,因此强烈首选 typedef:

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

void(^aBlock)() = genBlock(10);
aBlock();
于 2012-06-06T21:30:38.817 回答