对我来说这似乎是一个简单的问题,但我无法在任何地方找到答案。
我有一个视图控制器,可以异步下载数据,然后在按下按钮时保存它。
我可以确定异步请求将完成(ViewController是委托)并且即使在弹出ViewController时也会保存数据吗?否则我会检查下载是否已经完成,如果没有启动后台线程来下载数据。
感谢您的帮助!
答案 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;
}