2 garaster garaster 于 2013.04.27 10:09 提问

关于枚举block中的数组
self.myArray = @[ [^{ NSLog(@"a"); } copy],
                  [^{ NSLog(@"b"); } copy]];

然后

[self.myArray enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) {
    // This syntax is wrong, but I hope you get my intention
    void (^) (void) block = obj;  
    block();
}];

假如可以不用typedef,在枚举的时候怎么剔除block?

3个回答

KindAzrael
KindAzrael   2013.04.27 23:48
已采纳

应该改成

void (^block )(void) = obj;

关于block定义可以看这个例子

void (^blockReturningVoidWithVoidArgument)(void);
int (^blockReturningIntWithIntAndCharArguments)(int, char);
void (^arrayOfTenBlocksReturningVoidWithIntArgument[10])(int);
love_loveec
love_loveec   2013.04.27 14:04
[self.myArray enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) {
    void (^block)() = obj;  
    block();
}];

或者在参数列表直接这样:

[self.myArray enumerateObjectsUsingBlock:^(void (^block)(), NSUInteger idx, BOOL *stop) {
    block();
}];
for_2012
for_2012   2013.04.27 14:05
void (^block )(void) = obj;

应该这样设置

Csdn user default icon
上传中...
上传图片
插入图片