Iphone 使用NSURLConnection实例时内存泄漏

Iphone 使用NSURLConnection实例时内存泄漏,iphone,ios,memory-management,Iphone,Ios,Memory Management,我有一个ImageDownloader类,它将NSURLConnection*连接作为ivar进行初始化,并将其委托设置为self。 现在的疑问是,当我在AsyncImageView中初始化ImageDownloader实例以便开始图像下载时,它的保留计数为2{1,其中ImageDownloader init为,nsurl init设置委托为self}。因此,当我从asyncImageView中释放image downloader时,它的保留计数仍然为1 由于可能存在泄漏,如何释放imageDo

我有一个ImageDownloader类,它将NSURLConnection*连接作为ivar进行初始化,并将其委托设置为self。 现在的疑问是,当我在AsyncImageView中初始化ImageDownloader实例以便开始图像下载时,它的保留计数为2{1,其中ImageDownloader init为,nsurl init设置委托为self}。因此,当我从asyncImageView中释放image downloader时,它的保留计数仍然为1

由于可能存在泄漏,如何释放imageDownloader实例?
如果我在imageDownloader中释放连接ivar,则保留计数应为0,但随后应用程序崩溃(出于obv.原因)

是,NSURLConnection实例保留其委托。因此,在释放ImageDownloader实例之前,您应该调用[connection cancel]来释放它。

发布调试器崩溃函数调用跟踪和您的代码。如果我错了,请纠正我,我猜连接在加载数据(即调用所需的委托方法)后会释放委托。我们是否明确需要取消连接?是的,你是对的,只有在连接尚未完成时,你才应该取消连接。NSURLConnection类参考中描述了它:“连接保留委托。当连接完成加载、失败或取消时,它释放委托。”