gpt4 book ai didi

iphone - 多个 NSURLConnection 调用一个接一个?

转载 作者:行者123 更新时间:2023-11-28 18:41:21 25 4
gpt4 key购买 nike

好的,我为此尝试了很多不同的方法。我想调用一个 JSON API,得到它的响应,保存键值,然后用不同的参数再次调用它。最近,我尝试在 for 循环中调用 URL 方法,在通知发布时在 connectionDidFinishLoading: 中发布 NSNotification 并在观察者中发布 NSLogging 值。但它只是多次记录最终调用的值。

我用它来初始化连接...

 eventConnection=[[NSURLConnection alloc]initWithRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:urlString]] delegate:self startImmediately:NO];
[eventConnection scheduleInRunLoop: [NSRunLoop currentRunLoop] forMode:NSDefaultRunLoopMode];
[eventConnection start];

这是委托(delegate)方法...

-(void)connectionDidFinishLoading:(NSURLConnection *)connection
{
NSNotification *eventNotification=[NSNotification notificationWithName:@"eventsFound" object:nil userInfo:responseDict];
[[NSNotificationQueue defaultQueue]enqueueNotification:eventNotification postingStyle:NSPostNow coalesceMask:NSNotificationCoalescingOnName forModes:nil];
}

关于我如何实现这一点有什么建议吗?

最佳答案

为了有效地链接多个 NSURLConnection 请求,你不应该一次启动它们(例如,就像你说的“在 for 循环中”)。

相反,启动第一个请求;然后,从 connectionDidFinishLoading 开始第二个;然后,当再次执行 connectionDidFinishLoading 时,开始第三次,依此类推。

这只是一个草图,说明了如何帮助您为您的应用找到一个好的设计;一种可能性是:

  1. 定义一个状态机,负责根据当前状态触发请求; (状态可以是一个简单的整数,表示您要转到的顺序步骤);

  2. 启动状态机:它将触发第一个请求;

  3. 当请求完成时,connectionDidFinishLoading 将向状态机发出信号,以便它进入下一步;

  4. 在每个步骤中,状态机都会触发与该步骤对应的请求。

当然,还有其他可能的设计选项;哪个最好取决于您的总体要求和您需要的调用流程类型。

关于iphone - 多个 NSURLConnection 调用一个接一个?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10529731/

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