ios – NSMutableArray漏洞内的块(ARC)

ios – NSMutableArray漏洞内的块(ARC),第1张

概述我有一些内部块的 *** 作.这个 *** 作,只更新一个像这样的UI Image: ^(UIImage *image) { self.myImage = image; }]; 我的图像是通过使用NSURLConnection访问互联网来计算的.当我从互联网上收到图像时,我称之为NSMutableArray内的那个块.到现在为止还挺好.我的问题是,当我有多个具有相同URL的 我有一些内部块的 *** 作.这个 *** 作,只更新一个像这样的UI Image:

^(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环境中.那么什么可以解决方案呢?

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

这是关于它的a previous question和bug report.

总结

以上是内存溢出为你收集整理的ios – NSMutableArray漏洞内的块(ARC)全部内容,希望文章能够帮你解决ios – NSMutableArray漏洞内的块(ARC)所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://www.outofmemory.cn/web/1071289.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-26
下一篇 2022-05-26

发表评论

登录后才能评论

评论列表(0条)

保存