^(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)所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)