我有一些在块内的操作。此操作,仅更新一个UIImage
像这样:
^(UIImage *image) {
self.myImage = image;
}];
我的图像是通过访问互联网来计算的NSURLConnection
。当我从互联网上收到图像时,我称该块为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 环境中。那么有什么解决办法呢?
这是苹果框架中众所周知的漏洞。这不是由您使用块引起的。
Here's 上一个问题关于它和一个错误报告.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)