https://stackoverflow.com/a/20077594/2829111
但是现在不推荐使用sendAsynchronousRequest,我仍然坚持使用这段代码
__block NSDictionary *Json; [[session dataTaskWithURL:request completionHandler:^(NSData *data,NSURLResponse *response,NSError *error) { // handle response Json = [NSJsONSerialization JsONObjectWithData:data options:0 error:nil]; NSLog(@"Async JsON: %@",Json); [collectionVIEw reloadData];}] resume];
有了这个,reloadData参数需要很长时间才能执行.我已经尝试用以下方法强制回到主队列:
__block NSDictionary *Json; [[session dataTaskWithURL:request completionHandler:^(NSData *data,NSError *error) { // handle response Json = [NSJsONSerialization JsONObjectWithData:data options:0 error:nil]; NSLog(@"Async JsON: %@",Json); dispatch_sync(dispatch_queue_create("com.foo.samplequeue",NulL),^{[collectionVIEw reloadData});}] resume];解决方法 问题是完成处理程序不在主队列上运行.但是所有UI更新必须在主队列上进行.所以将它发送到主队列:
[[session dataTaskWithURL:request completionHandler:^(NSData *data,NSError *error) { // handle response NSError *parseError; NSDictionary *Json = [NSJsONSerialization JsONObjectWithData:data options:0 error:&parseError]; // do something with `Json` dispatch_async(dispatch_get_main_queue()),^{[collectionVIEw reloadData]});}] resume];总结
以上是内存溢出为你收集整理的iOS 9解析JSON的最佳解决方案全部内容,希望文章能够帮你解决iOS 9解析JSON的最佳解决方案所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)