我正在我的应用程序中创建一个类型,它可以访问远程休息服务。现在的问题是我正在使用一个 NSUrl 来连接它是同步的,并且由于通过 json 对象的循环量需要一些时间来解析。这导致 UI 在我搜索时冻结。
因此我决定尝试这样做:
[NSURLConnection sendAsynchronousRequest:myRequest
queue:[NSOperationQueue mainQueue]
completionHandler:^(NSURLResponse *response, NSData *taxiData, NSError *error) {
它似乎好一点,但仍然挂起,因为大部分处理都是在完成处理程序中完成的,它与我假设的主队列相关联。
然后我尝试创建自己的 NSOperationsQueue 或使用 dispatch_asynch:
[NSURLConnection sendAsynchronousRequest:myRequest
queue:[NSOperationQueue mainQueue]
completionHandler:^(NSURLResponse *response, NSData *taxiData, NSError *error) {
dispatch_queue_t typeAheadQueue = dispatch_queue_create("typeAhead", NULL);
dispatch_async(typeAheadQueue, ^ {
}];
它工作正常。唯一的问题是 uitableview 现在需要 10 秒来刷新数据。我现在可以在没有任何中断的情况下打字,但更新 uitableview 时会有很大的延迟。
我接近这个权利吗?任何帮助表示赞赏。
谢谢!