0

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

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

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

谢谢你的帮助!

4

2 回答 2

0

我希望你将异步请求与 uiviewcontroller 分开。

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

dispatch_async(dispatch_get_main_queue(), ^{ 

    //implement your code on UI

});

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

干杯

于 2013-08-01T22:39:53.470 回答
-1

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

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

单例示例:

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

    return _object;
}
于 2013-08-01T22:42:55.843 回答