ASINetworkQueue使用cancelAllOperations方法来取消下载时使用的注意点 在 ASIHTTPRequest V1.7前提下 正确使用: imgDataDownLo

本文介绍在使用ASINetworkQueue进行文件下载时,如何正确地取消所有下载任务以避免程序崩溃。通过对比两种不同设置方式的结果,指导开发者如何在对象释放时安全地取消下载操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

ASINetworkQueue使用cancelAllOperations方法来取消下载时使用的注意点

在   ASIHTTPRequest V1.7前提下

正确使用:
   imgDataDownLoadQueue = [[ASINetworkQueue alloc] init];
   [imgDataDownLoadQueue setShouldCancelAllRequestsOnFailure:NO];
   [imgDataDownLoadQueue setDelegate:self];
   [imgDataDownLoadQueue setRequestDidFailSelector:@selector(imgDataRequestFail:)];
   [imgDataDownLoadQueue setRequestDidFinishSelector:@selector(imgDataRequestFinish:)];
   [imgDataDownLoadQueue setQueueDidFinishSelector:@selector(imgDataQueueDidFinish:)];

    for(int i=0; i<[imgDatasToLoadArray count]; i++)
    {
     ASIHTTPRequest* imgRq = [ASIHTTPRequest requestWithURL:[NSURL URLWithString:[[imgDatasToLoadArray objectAtIndex:i] objectForKey:@"imgurl"]]];
    
     NSString* value[2];
     NSString* key[2];
     value[0] = [[imgDatasToLoadArray objectAtIndex:i] objectForKey:@"imgtime"];
     value[1] = [[imgDatasToLoadArray objectAtIndex:i] objectForKey:@"index"];
     key[0] = @"imgtime";
     key[1] = @"index";
    
     imgRq.userInfo = [NSDictionary dictionaryWithObjects:value forKeys:key count:2];
    
     [imgDataDownLoadQueue addOperation:imgRq];
    }
    [imgDataDownLoadQueue go];

=======
这样在dealloc中取消下载
[imgDataDownLoadQueue setDelegate:nil];
[imgDataDownLoadQueue cancelAllOperations];
[imgDataDownLoadQueue release];
imgDataDownLoadQueue = nil;
不会导致crash.

#######################################################3

如果按这种方法使用:

   imgDataDownLoadQueue = [[ASINetworkQueue alloc] init];
   [imgDataDownLoadQueue setShouldCancelAllRequestsOnFailure:NO];
   [imgDataDownLoadQueue setDelegate:self];

    for(int i=0; i<[imgDatasToLoadArray count]; i++)
    {
     ASIHTTPRequest* imgRq = [ASIHTTPRequest requestWithURL:[NSURL URLWithString:[[imgDatasToLoadArray objectAtIndex:i] objectForKey:@"imgurl"]]];
    
     NSString* value[2];
     NSString* key[2];
     value[0] = [[imgDatasToLoadArray objectAtIndex:i] objectForKey:@"imgtime"];
     value[1] = [[imgDatasToLoadArray objectAtIndex:i] objectForKey:@"index"];
     key[0] = @"imgtime";
     key[1] = @"index";
    
     imgRq.userInfo = [NSDictionary dictionaryWithObjects:value forKeys:key count:2];
     [imgRq setRequestDidFailSelector:@selector(imgDataRequestFail:)];
   [imgRq setRequestDidFinishSelector:@selector(imgDataRequestFinish:)];

     [imgDataDownLoadQueue addOperation:imgRq];
    }
    [imgDataDownLoadQueue go];

在dealloc中

[imgDataDownLoadQueue setDelegate:nil];
[imgDataDownLoadQueue cancelAllOperations];
[imgDataDownLoadQueue release];
imgDataDownLoadQueue = nil;

将会导致ASIHttpRequist的Crash.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值