【发布时间】:2014-08-19 04:31:35
【问题描述】:
我有一个使用NSURLSessionDataTask 从服务器获取数据的应用程序。截至目前,我正在显示数据的UIViewController 的init 方法中开始我的HTTP GET 请求。这是启动HTTP 请求的最佳/最智能的地方吗?如果没有,我应该在哪里做?
我问这个问题是因为当我退出我的应用程序并且它进入后台(并且没有被杀死)然后重新打开我的应用程序时,HTTP 请求不会被触发(因为它在UIViewControllers init 方法)并且显示的数据与服务器上的数据不是最新的。我试过把它放在viewDidLoad,但是进入前台时不会调用这个方法,viewWillAppear也不是viewDidAppear。
我是否应该在appDelegate 中的UIApplications 生命周期方法之一中执行所有HTTP 请求?
简而言之,在iOS 中发出HTTP 请求的最佳位置在哪里?
谢谢,如果需要我可以发布代码或解释更多。
【问题讨论】:
-
为什么不创建一个自定义对象来处理所有请求?最简单的是
NSObject的子类。 -
如果您的应用程序包含多个viewControllers,您应该将HTTP请求发送到appDelegate并在didFinishLaunching方法中调用它并将所有数据存储到NSMutableDictionary并在所有viewControllers中使用它,您可以调用它didEnterForground 方法中的方法,因此每次将应用程序搁置时,所有数据都会刷新。您可以询问是否有任何采石场。
-
好吧,我想把它放在
didEnterForground方法中。谢谢 -
viewWillAppear 应该在您退出并启动应用程序时被调用。只是好奇为什么它没有被调用。 :-/
-
@jithinroy viewWillAppear 根据我的经验是不可靠的。最好避免它,因为在很多情况下它不会被调用。
标签: ios objective-c uiviewcontroller httprequest nsurlsession