NSMutableArray漏洞内的块(ARC)

Rui*_*res 5 nsurlconnection ios objective-c-blocks automatic-ref-counting

我有一些内部块的操作.此操作,只更新UIImage如下:

^(UIImage *image) {
            self.myImage = image;
        }];
Run Code Online (Sandbox Code Playgroud)

我的图像是通过访问互联网计算的NSURLConnection.当我从互联网上收到图像时,我称之为内部的那个块NSMutableArray.到现在为止还挺好.我的问题是,当我有多个具有相同URL的图像,而不是进行多次调用时,我只是NSMutableArray在处理连接的类内部添加一个新块.这样,我进行一次调用,并更新共享URL的多个图像.一切正常,问题是我在泄漏块.我将这样的块添加到NSMutableArray:

 if( (self = [super init]) ) 
    {
        self.connectionURL=url;
        self.arrayOfBlocks=[NSMutableArray array];
        [arrayOfBlocks addObject:completion];
    }
    return self;
Run Code Online (Sandbox Code Playgroud)

这是初始化连接类的时候.这是我需要添加一个新块NSMutableArray(我只添加它,就是这样):

[arrayOfBlocks addObject:completion];
Run Code Online (Sandbox Code Playgroud)

这是当我最终收到回调并开始执行块时:

 for (MyBlock blockToExecute in arrayOfBlocks)
    {
        blockToExecute([UIImage imageWithData:data]);
    }
Run Code Online (Sandbox Code Playgroud)

问题是,这是以某种方式泄漏.我无法抵消使用版本或自动发布,因为我在ARC环境中.那么什么可以解决方案呢?


在此输入图像描述

Kur*_*vis 6

这是Apple框架中众所周知的漏洞.它不是由您使用块引起的.

这是关于它的先前问题错误报告.