【发布时间】:2018-03-07 22:51:19
【问题描述】:
我查看了有关此问题的多个堆栈溢出帖子,并尝试实施这些修复但无济于事。这个问题的前两个答案都不起作用NSURLSessionDataTask not executing the completion handler block
这是我非常简单的代码
#import <Foundation/Foundation.h>
int main(int argc, const char * argv[]) {
@autoreleasepool {
NSURLSession* session = [NSURLSession sessionWithConfiguration:[NSURLSessionConfiguration defaultSessionConfiguration]];
NSURLSessionDataTask *dataTask = [session dataTaskWithURL:[NSURL URLWithString:@"https://itunes.apple.com/search?term=apple&media=software"] completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) {
NSDictionary *json = [NSJSONSerialization JSONObjectWithData:data options:0 error:nil];
NSLog(@"%@", json);
}];
[dataTask resume];
}
return 0;
}
我从来没有得到任何控制台输出。
我尝试过以不同的方式实例化会话,例如
[NSURLSession sharedSession]
没用,
以及尝试在不同线程中执行完成块中的代码
dispatch_sync(dispatch_get_main_queue(), ^{
// Completion code goes here
});
这也没用。
我也尝试了不同的 URL。我不知道为什么它不起作用。
【问题讨论】:
-
您可以尝试记录错误并查看显示的内容。另外,您是否在 xcode 中添加了实际的 Foundation.framework?并且还执行 NSLog(@"Result: %@",json): 来查看那行代码是否被执行。
-
ps。网址很好。我在浏览器中测试过它可以工作。
标签: objective-c nsurlsession nsurlsessiondatatask