后台iPhone中的多个异步HTTP请求

时间:2012-02-29 09:36:35

标签: iphone ios web-services cocoa http

我有一个有很多视图的应用程序(使用标签栏控制器)。我想制作并发异步http请求,与用户正在查看的当前视图无关。当响应http请求时,我想更新用户界面,然后再次请求。如果我在UIViewController子类中编写代码,一切正常。在哪里可以编写代码以便工作,而不知道用户正在查看哪个选项卡?我想避免使用线程。这可能吗?

我创建了一个Web服务,它接收http请求并在有新内容时响应。所以,然后我请求新信息,然后我重新打开web服务的窗口来跟我说话。这样我就建立了一个“持久”的联系。

最后我想知道,通知我的模型将对其进行更改的最佳方法是什么。 NSNotification?代表团?

更新

以下代码未收到任何回复。它收到BAD_ACCESS并崩溃。

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
    // Override point for customization after application launch.
    // Request Data
    ConnectionHandler *connectionHandler = [[ConnectionHandler alloc] init];
    [connectionHandler requestSO];
    [connectionHandler requestSopen];
    // Make Root View Controller
    MainViewController *mainViewcontroller = [[MainViewController alloc] initWithNibName:@"MainViewController" bundle:nil];
    [self.window setRootViewController:mainViewcontroller];
    //
    self.window.backgroundColor = [UIColor whiteColor];
    [self.window makeKeyAndVisible];
    return YES;
}

2 个答案:

答案 0 :(得分:2)

NSURLConnection默认为async,除非您手动调用sendSynchronousRequest:returningResponse:error :,创建一个NSURLConnectionDelegate类,将该类设置为模型的委托并使用它来更新UI。

答案 1 :(得分:0)

避免线程是错误的,但是如果你想从中心位置运行所有进程,那么appDelegate可能是你可以做到的一个地方。我个人会在模型中做所有的网络请求。