iPhone App中警报的异步(非阻塞)显示

时间:2013-04-19 17:09:53

标签: ios objective-c web-services asynchronous

在我的iPad应用中,我正在连接到网络服务。在连接到它的同时,我在标签中向用户显示进度活动指示符和相应的消息(标签在子视图中并且将子视图添加到当前视图)。

在这行代码(调用将子视图添加到视图的方法)之后,调用该方法来调用Web服务。但是,首先执行Web服务调用,然后仅显示用户信息子视图。

有没有办法说我希望'继续显示'警报视图,即使执行继续下一行代码?

// Calling method to add info/alert subview to current view [self displayUserMessage]; 
// Connect to Web Service [self connectToWebService];

2 个答案:

答案 0 :(得分:2)

我不确定我是否完全理解你的问题。如果您在解释后提供一些代码,那么它也会更容易理解......无论如何,我理解的是,您正在连接到Web服务并在连接正在进行时显示一些信息?

请记住,如果您不想挂起用户界面,则需要在另一个线程中发送webService Connection,这样您就可以保持主线程免费。你可以使用GCD。

dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_BACKGROUND, 0), ^{
    [self connectWithWebService];
});

然后,根据Web服务的体系结构,您可以使用委托o可能是完成块来向用户显示一些消息(信息/警报)。在这种情况下,请记住与UI相关的任何内容都应该在主线程上运行。正如我之前所说,取决于你的架构,你应该做这样的事情

dispatch_async(dispatch_get_main_queue(), ^{
    // Show UI Changes
});

当webService方法在后台运行时,UI应该正确更新。

答案 1 :(得分:0)

如果您希望使用NSURLConnection sendAsynchronousRequest:queue:completionHandler: {{1}}

,则更容易使用异步连接

您可以在调用之前显示警报并在完成处理程序中将其关闭。