问题描述
- 关于枚举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?
解决方案
应该改成
void (^block )(void) = obj;
关于block定义可以看这个例子
void (^blockReturningVoidWithVoidArgument)(void);int (^blockReturningIntWithIntAndCharArguments)(int char);void (^arrayOfTenBlocksReturningVoidWithIntArgument[10])(int);
解决方案二:
[self.myArray enumerateObjectsUsingBlock:^(id obj NSUInteger idx BOOL *stop) { void (^block)() = obj; block();}];
或者在参数列表直接这样:
[self.myArray enumerateObjectsUsingBlock:^(void (^block)() NSUInteger idx BOOL *stop) { block();}];
解决方案三:
void (^block )(void) = obj;
应该这样设置
时间: 2024-11-03 16:57:55