我试图更多地理解块。
我有这些定义:
@property (nonatomic, retain) NSMutableArray * callBacksOnSuccess;
@property (nonatomic, copy) void (^callBackSuccessWithUIImage) (UIImage *) ;
当图像下载完成后,我在完成块中执行此操作并且一切正常
UIImage *coverImage = [UIImage imageWithData:data];
callBackSuccessWithUIImage(coverImage);
现在我希望能够对存储在callBacksOnSuccess NSMutableArray中的所有回调块做同样的事情,但我不知道如何处理它。
我正在尝试for循环,但这很不可能因为id class class定义很明显:
UIImage *coverImage = [UIImage imageWithData:data];
for (id callBackBlock in callBacksOnSuccess)
{callBackBlock(coverImage);}
请推动我走向正确的方法。
谢谢你!答案 0 :(得分:3)
首先:
考虑对块使用typedef
,以简化语法:
typedef void (^MyBlock)(UIImage*); //declare this somewhere
然后,您可以像这样轻松遍历数组,执行其中的每个块:
UIImage *coverImage = [UIImage imageWithData:data];
for (MyBlock block in callBacksOnSuccess) {
block(coverImage);
}
您甚至可以在您的财产中使用新类型:
@property (nonatomic, copy) MyBlock callBackSuccessWithUIImage;