我在XPC服务中使用优秀的ASIHTTPRequest从互联网获取一些数据。
我正在创建一个简单的请求。但是,由于某些原因,它的委托函数没有被调用。
我已启用ASIHTTPRequest的调试日志,因此我看到请求确实执行了。
经过一番挖掘,我发现了可能的原因:
在ASIHTTPRequest.m中,在requestFinished方法的末尾,有一个调用:
[self performSelectorOnMainThread:@selector(reportFinished) withObject:nil waitUntilDone:[NSThread isMainThread]];
reportFinished方法是调用委托的方法。
出于某种原因,它从未被发射。如果我将此行替换为:
//[self performSelectorOnMainThread:@selector(reportFinished) withObject:nil waitUntilDone:[NSThread isMainThread]];
[self reportFinished];
则调用委托。然而,我假设它是在运行异步请求时在错误的线程上调用的。
我应该做什么来调整代码,以便它调用委托的方法,而不修改它的逻辑/线程?