2011-02-25 82 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]; 

然後回調被調用。瞧!