目標 c に Controller と Connector の 2 つのクラスがあります。コントローラは、データを取得するために Web サービスへの接続を構築するようコネクタに要求します。接続自体はデリゲートで実装されます。このデリゲートは、データが到着した場合にメソッド呼び出しを取得します。デリゲートをコネクタ自体に設定しました。私の問題は、コントローラーでコネクターのメソッドを呼び出し、このメソッドがすぐにデータを返すことです。これは委任なしです。マルチスレッドを試してコントローラーで待機しましたが、単一のメソッドのマルチスレッドしか見つかりませんでした。
[NSThread detachNewThreadSelector:@selector(myMethod) toTarget:myClass withObject:nil];
Connector クラス全体がスレッド化されていないため、Connector のデリゲート メソッドを呼び出すことができないため、単一のメソッドのマルチスレッド化は機能しません。誰でもこれを解決する方法を教えてもらえますか?
編集: コネクタ メソッドを呼び出すコードを追加します (これはコントローラーからのコードです)。
_data = nil;
dispatch_queue_t myQueue = dispatch_queue_create("my queue", NULL);
dispatch_async(myQueue, ^{
_data = [_soapConnector startRequestWithSOAPMessage:soapMessage];
});
while(!_data){
NSLog(@"waiting");
}
//data arrived successfully here so we can manipulate it