我在目标 c 中有两个类 Controller 和 Connector。控制器要求连接器建立与 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