gpt4 book ai didi

objective-c - 代表没有得到零

转载 作者:行者123 更新时间:2023-11-29 04:22:50 24 4
gpt4 key购买 nike

我正在开发一个项目,在其中执行图像的延迟加载。当图像下载器下载图像时,它会将消息发送给其委托(delegate)来处理图像。但是,当它的委托(delegate)(即 View Controller )从内存中释放时,我不希望 imagedownloader 类向其委托(delegate)发送消息,因为它已经死了。我需要知道什么时候可以将 imagedownloader 的 delegate 设置为 nil ?我的目标设置为iOS4.0,所以我不能使用弱引用。我有许多 imagedownloader 实例存储在字典中,准备向其委托(delegate)发送完成消息。我必须将所有这些存储实例的 delegte 设置为 nil。现在我正在做'

-(void)viewWillDisappear:(BOOL)animated
{
for(imagedownloader *imagedownloaderObj in dict)
{
imagedownloaderObj.delegate = nil;
}

[super viewWillDisAppear:animated]
}

但它在循环中崩溃了。请帮助任何人...很抱歉我的英语不好,但我希望你明白我的问题是什么..

最佳答案

您的代码有问题 - 您正在枚举一个字典,该字典枚举其键,而不是其对象。相反,你想做的是:

for(ImageDownloader *imageDownloader in [imageDownloaderDictionary allValues])
{
if (imageDownloader.delegate == self)
imageDownloader.delegate = nil;
} //note - I've adjusted naming to match Objective-C style conventions. It fits in better with the framework code now.

此外,我建议在 dealloc 中执行此操作。我不知道在释放之前你总是会得到一个 viewWillDisappear: 方法,在早期版本的 iOS(包括 iOS4)上你当然不能保证这一点。此外,如果您返回该 View ,您不想浪费时间再次下载图像。

关于objective-c - 代表没有得到零,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12742039/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com