朋友们,告诉我谁知道 - 有一个返回 NSData 变量的自定义类方法 - responseData。它在块代码中使用来自服务器的响应进行初始化。问题是我的方法在进入响应块之前返回并退出方法,从而返回nil。
解决这种情况的方法有哪些?
-(NSData *) getDataFromServer {
__block NSData *responceData = nil;
NSURLSessionConfiguration *sessionConfiguration= [NSURLSessionConfiguration defaultSessionConfiguration];
NSURLSession *session = [NSURLSession sessionWithConfiguration:sessionConfiguration delegate:self delegateQueue:[NSOperationQueue mainQueue]];
NSURL *url = [NSURL URLWithString:self.urlForResource];
NSURLSessionDataTask *dataTask = [session dataTaskWithURL:url completionHandler:^(NSData * _Nullable data, NSURLResponse * _Nullable response, NSError * _Nullable error) {
responceData = [[NSData alloc] initWithData:data];
}];
[dataTask resume];
return responceData;
}
我会在评论中赞成@Max 的回答。我建议您将 c 更改为异步执行
completionBlock。或多或少是这样的:现在,如果您直接需要同步执行代码,那么您可以通过两种方式进行。1)不使用
NSURLSession:2) 等待同步代码的执行。例如,使用
dispatch_group