iphone - 使用 GCD 执行 sudzc Web 服务

标签 iphone objective-c ios sudzc

我对GCD有点困惑

我尝试调用一个执行 Web 服务调用的类:

dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
        [searchService doSearch:self.searchData];
});

我正在使用 Sudzc 生成的网络服务。对由 Sudzc 生成且位于 SearchService 类内部的服务的实际服务调用如下:

 [service doSearch:self action:@selector(doSearchHandler:) e: searchArgs];

通话结束后,我应该返回:

- (void) doSearchHandler: (id) value {
}

如果不使用 GCD,它可以正常工作,但是当我添加它时,我永远不会返回到 doSearchHandler 方法。

最佳答案

我遇到了 Sudzc 操作阻塞主线程的问题。 然而,Soap 请求不是问题,因为虽然 NSURLRequest 是在主线程上执行的,但它的数据是由委托(delegate) didReceiveData

管理的

阻碍我的 UI 的是处理程序方法中发生的接收 XML 的处理。

在处理程序方法中 (- (void) SudzcRequestHandler: (id) value { ...) 我像这样处理数据:

dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{

...processing...

[[NSNotificationCenter defaultCenter] postNotificationName:KManagerHasFinishedLoading object:self userInfo:[NSDictionary dictionaryWithObjectsAndKeys:[NSNumber numberWithInt:NOTIFICATION_RESULT_OK], @"Result", nil]];

});

我在 Manager 中运行处理,它是一个单例对象,但其他实现可能会有所不同。因此,该通知用于让我的 ViewController 知道处理已结束。

关于iphone - 使用 GCD 执行 sudzc Web 服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11359493/

相关文章:

ios - Realm - 将带有初始数据的文件添加到项目 (iOS/Swift)

iphone - 无法识别的选择器发送到 UIViewController 上的实例

iphone - 在 iPhone 上启用/禁用每个 View 的状态栏(20 像素问题)

iphone - TableView :willDisplayHeaderView:inSection: not called when running for iOS 6. 1

objective-c - 为什么不安全地假设Objective C for循环的行为类似于C for循环?

ios - 多个 UIWindows 以及哪个控制状态栏方向

禁用的 iPhone UITextView 重新启用后将成为第一响应者

ios - 如何将操作连接到以编程方式创建的 UIbutton

iphone - cellLabel.text的内容似乎在随机单元格中覆盖了自身

iOS Firebase Facebook 因 URL 错误而失败