gpt4 book ai didi

ios - iOS如何等待直到 `didReceiveData`处理程序被调用

转载 作者:行者123 更新时间:2023-12-01 19:15:59 25 4
gpt4 key购买 nike

我正在开发从Web服务器获取数据的ios应用程序。我希望其他所有内容都等待,直到该类的处理程序之一被调用并完成。我知道可以通过使用调度/线程,但是我只是不知道如何。

-(void)callWebService:(NSString*)URL:(NSString*)SOAP{
NSURL *url = [NSURL URLWithString:URL];
NSMutableURLRequest *req = [NSMutableURLRequest requestWithURL:url];

[req setHTTPMethod:@"POST"];
[req setHTTPBody:[SOAP dataUsingEncoding:NSUTF8StringEncoding]];


NSURLConnection *con = [[NSURLConnection alloc] initWithRequest:req delegate:self];
if(con){
[con start];
}
}

在此方法的末尾继续该类之外的代码。但我想等到这个处理程序被调用(并完成):
-(void)connection:(NSURLConnection *)c didReceiveData:(NSData *)data{
NSString *res = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
NSLog(@"%@",res);
Ukol_Parser *parser = [Ukol_Parser alloc];
[parser parseUkol:res];
}

因为这里的解析器将数据放入sqlite db,并且正在读取此类之外的数据。但是“外部”代码的执行速度比我得到响应和调用处理程序的速度快。

最佳答案

如果您想“其他所有东西都在等待”,那么听起来您真正想做的就是同步请求。

查看[NSURLConnection sendSynchronousRequest:returningResponse:error:]

但是,请确保在后台线程上执行此操作,因为如果在主线程上执行此操作,则UI将会阻塞,并且您的应用程序将对用户的触摸或其他任何内容均无响应。

关于ios - iOS如何等待直到 `didReceiveData`处理程序被调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13324821/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com