NSURLSessionDownloadTask可以调用两次吗?

时间:2016-07-20 14:46:57

标签: ios objective-c nsurlsession

我是NSURLSession的新手,我在其他stackoverflow问题中找不到答案。所以我发布这个。

我的ViewController中有一个Button和ProgressBar。使用NSURLSessionDownloadTask的实例,我按以下方式调用resume

@property (nonatomic, strong) NSURLSessionDownloadTask *downloadTask;

@interface

中的上一行指定
 NSURLSessionConfiguration *sessionConfiguration = [NSURLSessionConfiguration defaultSessionConfiguration];
 NSURLSession *session = [NSURLSession sessionWithConfiguration:sessionConfiguration delegate:self delegateQueue:[NSOperationQueue mainQueue]];
 self.downloadTask = [session downloadTaskWithURL:url];

@implementation上方指定上面的行,并在buttonclick上调用resume方法,如下所示

-(void) buttonpressed:(id)sender{
    [self.downloadTask resume];
}

这里发生的是,

当我第一次点击按钮时,它会完美下载

(即调用正确的委托方法 downloadTask:didWriteData:totalBytesWritten:totalBytesExpectedToWrite& didFinishDownloadingToURL

但是当我再次点击按钮时,它没有下载(即代表方法没有调用)

  

1)我在哪里做错了?

     

2)如果我第二次点击按钮,我想再次下载。什么   我该怎么做?

感谢任何帮助,感谢时间(:

1 个答案:

答案 0 :(得分:1)

resume仅适用于已暂停的任务,您的任务已完成。简单的解决方法是在同一个函数中创建并开始(真正地,恢复)任务。

- (void)setupAndStartDownload {
    // your setup code, from the OP
    // then start it here
    [self.downloadTask resume];
}

-(void) buttonpressed:(id)sender{
    [self setupAndStartDownload];
}