弹出ViewController时是否完成async http下载?

时间:2013-08-01 21:54:23

标签: ios objective-c nsurlconnection

对我来说这似乎是一个简单的问题,但我无法在任何地方找到答案。

我有一个视图控制器,可以异步下载数据,然后在按下按钮时保存它。

我可以确定异步请求将完成(ViewController是委托)并且即使在弹出ViewController时也会保存数据吗?否则我会检查下载是否已经完成,如果没有启动后台线程来下载数据。

感谢您的帮助!

2 个答案:

答案 0 :(得分:0)

我希望你能从uiviewcontroller中分离出异步请求。

否则请确保在主线程上触发UI上的每个操作。

dispatch_async(dispatch_get_main_queue(), ^{ 

    //implement your code on UI

});

如果uiviewcontroller已连接委托并且控制器仍然存在(不是nil),则即使uiview控制器尚未出现,也会运行委托方法。

干杯

答案 1 :(得分:-1)

您应该在模型类中进行所有数据下载,而不是控制器(MVC)。

创建一个单独的NSObject,其中包含从Web下载的所有逻辑,并将其存储在单例中。这样,您的应用中的任何类都可以访问该数据,并且当您从导航堆栈中弹出viewControllers时,您不必担心它会被解除分类。

Singleton示例:

+ (YourObject *)object
{
    static YourObject *_object = nil;
    static dispatch_once_t oncePredicate;
    dispatch_once(&oncePredicate, ^{
        _object = [[self alloc] init];
    });

    return _object;
}