2011-02-25 85 views
0

我使用WSMakeStubs(在开发工具中)来生成存根代码以访问SOAP Web服务。我对对象所做的调用目前只是阻止。当我尝试使用异步调用时,什么也没有发生,我相信这与我对运行循环的理解有关。我初始化一个对象,并尝试安排其上运行的循环是这样的:为什么不会异步SOAP Web服务调用工作

BeginPartnerSession *call = [[BeginPartnerSession alloc] init]; 
[call setParameters:kPartnerID in_Password:kPartnerPassword]; 
[call setCallBack:self selector:@selector(sessionIDRequestDidFinish:)]; 
[call scheduleOnRunLoop:[NSRunLoop currentRunLoop] mode:NSDefaultRunLoopMode]; 
[call release]; 

存根要求对运行循环调度是这样的:

- (void) scheduleOnRunLoop:(NSRunLoop*) runloop mode:(NSString*) mode 
{ 
    WSMethodInvocationScheduleWithRunLoop([self getRef], [runloop getCFRunLoop], (CFStringRef) mode); 
} 

的调用[自我getRef]返回已设置回调的调用对象。回调然后应该呼叫到我的目标和选择器,但它在运行循环调用计划后从未达到该中断点。运行循环调度中需要更改哪些内容以使其正常工作?

同步调用工作正常,所以我敢肯定这不是服务器问题。

回答

0

我终于把这个分解成了一个单独的项目,我可以将问题隔离开来。异步调用工作得很好,这使得runloop对我怀疑。原来这个问题与我作为iPhoto插件运行的事实有关。我只是改变了runloop模式,所以通话看起来像这样:

[call scheduleOnRunLoop:[NSRunLoop currentRunLoop] mode:NSRunLoopCommonModes]; 

然后回调被调用。瞧!