我有一些在块内的操作。此操作,仅更新UIImage
如下:
^(UIImage *image) {
self.myImage = image;
}];
我的图像是通过使用NSURLConnection
. 当我从 Internet 收到图像时,我称该块位于NSMutableArray
. 到现在为止还挺好。我的问题是,当我有多个具有相同 URL 的图像时,我只需在NSMutableArray
处理连接的类内部添加一个新块,而不是进行多次调用。这样,我只打了一个电话,就可以更新多个共享 URL 的图像。一切正常,问题是我正在泄漏块。我将这样的块添加到NSMutableArray
:
if( (self = [super init]) )
{
self.connectionURL=url;
self.arrayOfBlocks=[NSMutableArray array];
[arrayOfBlocks addObject:completion];
}
return self;
这是初始化连接类的时候。这是我需要添加一个新块的时候NSMutableArray
(我只添加它,就是这样):
[arrayOfBlocks addObject:completion];
这是我终于收到回电并开始执行块的时候:
for (MyBlock blockToExecute in arrayOfBlocks)
{
blockToExecute([UIImage imageWithData:data]);
}
问题是这以某种方式泄漏。因为我在 ARC 环境中,所以我无法使用发布或自动发布来抵消。那么有什么解决办法呢?