0

我想使用 AFNetworking 对我的服务器执行定期 JSON 请求(更新用户的配置文件并检查更改)。

如果后台作业正在运行但用户按下“返回”按钮或任何使 ViewController 被销毁的东西怎么办?我该如何管理?我的意思是,在这种情况下,我想忽略结果并在用户返回视图时再次执行它

谢谢

PS:我不想要完整的工作代码。我只是想知道如何从后台下载作业(使用 AFNetworking 运行)中知道 ViewController 是否已被破坏。

4

4 回答 4

1

看看这个问题: 发出许多网络请求的 iOS 应用程序的最佳架构?

一种简单的方法是创建一个自定义网络管理器类的单例实例,该类将处理所有请求和网络后台作业。您可以从任何地方(例如视图控制器)访问它,并且它会在应用程序的整个运行时保留其实例。

关于单例:http ://en.wikipedia.org/wiki/Singleton_pattern

于 2013-10-21T07:53:09.263 回答
1

为了停止正在运行的网络请求,您可以在 View Controllercancel的方法中发送到网络操作。viewWillDisappear:

同样,为了在视图可见时“自动”启动网络请求,请使用 method viewWillAppear:

于 2013-10-21T07:55:02.240 回答
1

如果你只是需要完成你的任务。ViewController意思是,当&仅当特定出现时才尝试获得更改。

使用方法

-(void) viewDidappear{
// Initialise Your task here 
}

-(void) viewWillDisappear{
// Destoy(Cancel ) the task 
}
于 2013-10-21T07:55:24.177 回答
1

一种解决方案是以使用NSNotification机制的方式实现下载:

  1. 将 ViewController 设置为侦听器。

  2. 设置 bg 下载以在下载过程完成时启动通知。

  3. 如果通知触发时 VC 仍然存在,那就太好了 - 它会处理通知并执行您需要的任何操作。如果它不在附近……什么也不会发生。

于 2013-10-21T08:02:01.040 回答