gpt4 book ai didi

objective-c - 确定弱引用对象是否已被释放

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:46:15 25 4
gpt4 key购买 nike

我使用下面的代码来下载图片:

- (void)downloadImageAtUrl:(id)url
andDelegate:(id<IPServerDelegate>)delegate_ {
NSURL *correctUrl = nil;
if ([url isKindOfClass:[NSString class]])
correctUrl = [NSURL URLWithString:[NSString stringWithFormat:@"%@%@", kHostURL, [url substringFromIndex:1]]];
else
correctUrl = url;
__block ASIHTTPRequest *request = [ASIHTTPRequest requestWithURL:correctUrl];
[imageRequestsArray addObject:request];
[request setCompletionBlock:^{
if (request.responseStatusCode == 200) {
if (delegate_ && [delegate_ respondsToSelector:@selector(didDownloadImage:atUrl:)]) {
[delegate_ didDownloadImage:request.responseData atUrl:request.url];
}
}
else {
if (delegate_ && [delegate_ respondsToSelector:@selector(failedToDownloadImageWithUrl:)]) {
[delegate_ failedToDownloadImageWithUrl:request.url];
}
}
[imageRequestsArray removeObject:request];
}];

[request setFailedBlock:^{
if (delegate_ && [delegate_ respondsToSelector:@selector(failedToDownloadImageWithUrl:)]) {
[delegate_ failedToDownloadImageWithUrl:request.url];
}
[imageRequestsArray removeObject:request];
}];

[request startAsynchronous];
}

如果 delegate_ 对象已被释放,则应用程序会崩溃。如何确定对象 delegate_ 已被释放而无需创建对它的直接引用?我知道 iOS 5 中的 __weak 指针,但我的应用程序必须与 iOS 4.3 兼容。

最佳答案

好吧,当你的 delegate_ 被释放时,我假设它是释放的。什么时候,之后:

[object release];

这样做:

object=nil;

然后在你的代码上,检查它是否存在:

if(delegate_){

}

关于objective-c - 确定弱引用对象是否已被释放,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8474787/

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