为什么我的NSURLSession永远不会开始?

时间:2014-02-21 00:24:13

标签: ios objective-c ios7 nsurl nsurlsession

我有以下代码使用NSURLSession启动下载,但没有调用任何委托方法:

- (void)viewDidLoad
{
    [super viewDidLoad];

    NSURLSession *session = [NSURLSession sessionWithConfiguration:[NSURLSessionConfiguration defaultSessionConfiguration]];

    NSURLSessionDataTask *dataTask1 = [session dataTaskWithURL:[NSURL URLWithString:@"http://i.imgur.com/RARAP1J.jpg"]];
    NSURLSessionDataTask *dataTask2 = [session dataTaskWithURL:[NSURL URLWithString:@"http://i.imgur.com/JR9ZihS.jpg"]];
    NSURLSessionDataTask *dataTask3 = [session dataTaskWithURL:[NSURL URLWithString:@"http://i.imgur.com/f4w08VP.jpg"]];
    NSURLSessionDataTask *dataTask4 = [session dataTaskWithURL:[NSURL URLWithString:@"http://i.imgur.com/MzWvRKa.jpg"]];

    [dataTask1 resume];
    [dataTask2 resume];
    [dataTask3 resume];
    [dataTask4 resume];
}

- (void)URLSession:(NSURLSession *)session dataTask:(NSURLSessionDataTask *)dataTask didReceiveData:(NSData *)data {
    NSLog(@"yep");
}

- (void)URLSession:(NSURLSession *)session task:(NSURLSessionTask *)task didCompleteWithError:(NSError *)error {
    NSLog(@"YEAH");
}

我不知道为什么会这样。我究竟做错了什么?

2 个答案:

答案 0 :(得分:0)

我是你没有为会议设置代表 尝试使用

初始化会话
NSURLSession *session = [NSURLSession sessionWithConfiguration:[NSURLSessionConfiguration defaultSessionConfiguration] delegate:self delegateQueue:nil];

答案 1 :(得分:0)

你在说:

[NSURLSession sessionWithConfiguration:[NSURLSessionConfiguration defaultSessionConfiguration]]

您没有指定委托,那么您将如何获得任何回调?你不能。您必须通过调用dataTaskWithURL:completionHandler:来创建数据任务,以便添加完成处理程序。

当然,如果您调用sessionWithConfiguration:delegate:delegateQueue:会更好,因为那时您可以将自己设置为委托。但是你并没有那么明显地调用那些委托方法。