2011-08-09 39 views
0

guys線程中的iOS調用soap函數

我是一名新的iOS開發人員,在新線程中調用soap函數時遇到問題。

下面是詳細信息:

我有一個函數調用SOAP Web服務:

WebService *webService = [[[WebService alloc]init]retain]; 
[webService getUser:self action:@selector(getUserHandler) userName: usnm encPassword: pswd]; 

這個函數僅僅從sudzc.com產生的(!偉大的網站,謝謝) 簡單地調用這個函數我可以得到

<user><username>XXX</username><userStatus>XXX</userStatus><companyCode>XXX</companyCode><password>XXX</password></user> 

返回從webservice。和我的getUserHandler將完美工作。

但如果我想調用web服務在這樣的主題:

[NSThread detachNewThreadSelector:@selector(myMethod) toTarget:self withObject:nil]; 

-(void)myMethod 
{ 
    NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; 
    NSLog(@"!, %@,%@",usnm,pswd); 
    WebService *webService = [[[WebService alloc]init]retain]; 
    [webService getUser:self action:@selector(getUserHandler) userName: usnm encPassword: pswd]; 
    [pool drain]; 
} 

我似乎並沒有得到returnxml,它似乎從未getUserHandler開始(我把的NSLog在getUserHandler ,但這次不會打印)。

我不知道爲什麼會這樣,

任何線索,歡迎!

Thanx!

+0

我聽說試試異步,是不是一個好方向?原因我找不到有關以這種方式調用soap函數的任何示例 – Luvina

+0

爲什麼不使用Grand Central Dispatch?而且,你過度保留了'webService' ......這將會泄漏,除非你已經意識到你需要'釋放'它兩次並且這樣做。 – GarlicFries

+0

感謝@GarlicFries因爲我不會讓autorelease池釋放我的「webService」... – Luvina

回答