2

我试图更多地理解块。

我有这些定义:

@property (nonatomic, retain) NSMutableArray * callBacksOnSuccess;
@property (nonatomic, copy) void (^callBackSuccessWithUIImage) (UIImage *) ;

当图像下载完成时,我在完成块中执行此操作,一切都很好

UIImage *coverImage = [UIImage imageWithData:data];
callBackSuccessWithUIImage(coverImage);

现在我希望能够对存储在 callBacksOnSuccess NSMutableArray 中的所有回调块执行相同的操作,但我不知道如何解决这个问题。

我正在尝试 for in 循环,但由于 id 类定义模棱两可,这很可能不起作用:

UIImage *coverImage = [UIImage imageWithData:data];
for (id callBackBlock in callBacksOnSuccess) 
{callBackBlock(coverImage);}

请把我推向正确的方法。

谢谢你!

4

1 回答 1

3

首先:

考虑在typedef您的块中使用 a ,以简化语法:

typedef void (^MyBlock)(UIImage*); //declare this somewhere

然后,您可以像这样轻松地遍历您的数组,执行其中的每个块:

UIImage *coverImage = [UIImage imageWithData:data];
for (MyBlock block in callBacksOnSuccess) {
    block(coverImage);
}

您甚至可以在您的属性中使用新类型:

@property (nonatomic, copy) MyBlock callBackSuccessWithUIImage;
于 2013-09-04T01:57:17.727 回答