0

彼ら

私は新しいiOS開発者ですが、新しいスレッドでsoap関数を呼び出すときに問題が発生します。

詳細は次のとおりです。

SOAPWebサービスを呼び出す関数があります。

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

この関数は、sudzc.com(Great Website!Thanx!)から生成されたもので、この関数を呼び出すだけで取得できます。

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

Webサービスから戻ります。そして私の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が起動しないようです(getUserHandlerにNSLogを配置しましたが、今回は出力されません)。

なぜこれが起こっているのか分かりませんでした、

ヒントは大歓迎です!

ありがとう!

4

1 に答える 1

0

ここのチュートリアルで説明されているように、Sync-Asyncパターンを調べることを強くお勧めします。

同期-非同期ペアパターン–iOSでの簡単な同時実行

同じ問題に焦点を当てた質問もあります:

複数の非同期WebサービスリクエストNSURLConnectioniOS

HTH

于 2011-08-09T20:22:44.747 に答える