【发布时间】:2010-09-02 21:48:40
【问题描述】:
我需要在应用程序中进行多个异步服务调用:didFinishLaunchingWithOptions: 来自我的应用程序委托的方法,以便从服务中检索一些数据,以便在我的应用程序中的各种控制器中使用。我可以控制服务,并且我将 API 设计为尽可能 RESTful,因此我需要在应用初始化期间进行多次调用。
我想要做的是显示一个带有进度指示器的加载视图 - 类似于 Default.png 中的默认初始屏幕 - 并在服务调用完成并且我有我需要的初始值后删除该视图。如果只有一个服务调用,这很容易做到,因为我可以简单地将该逻辑挂钩到 NSURLConnection 的 connectionDidFinishLoading: 委托方法中,方法是隐藏加载视图并显示根控制器。
但是,对于多个服务调用,它变得很棘手。我可以将所有内容“链接”在一起并触发一个请求,等待它完成/失败,然后触发第二个请求,依此类推,直到我到达最后一个请求。在最后一个请求中,然后我隐藏加载视图并显示普通视图。但是,这可能会因多次服务调用而变得笨拙,并且代码变得难以理解和遵循。
对此有最佳方法的建议吗?
我认为一种解决方案是让一个单例类负责进行服务调用和应用程序初始化。单例对象将在启动时并行触发所有必要的请求,并且每个失败/完成回调将检查每个请求是否已完成。如果所有请求都完成了,那么它可以调用应用程序委托中的某个方法并告诉它隐藏加载视图、显示根控制器等。
想法?
【问题讨论】:
标签: iphone objective-c nsurlconnection uiapplicationdelegate