弹出一个有异步任务的viewController,它会在iOS的任务完成之前销毁吗?

Pop a viewController which has asnyc task, will it destory before the task finish in iOS?

当我弹出 viewcontroller 时,在它的 viewWillDisappear 方法中,我将 viewcontroller 的数据本地化为 sandbox,本地化完成后系统会销毁吗viewcontroller?

- (void)viewWillDisappear:(BOOL)animated {

    [super viewWillDisappear:animated];

    // localization method
    [self localDataToSandbox];
}

- (void)localDataToSandbox {

    if (self.buyDataSource.count > 0) {

        NSMutableArray *arr_tmp;

        if (self.buyDataSource.count > 20) {
            arr_tmp = [[self.buyDataSource subarrayWithRange:NSMakeRange(0, 20)] mutableCopy];
        }else {
            arr_tmp = self.buyDataSource;
        }

        CacheManager *manager = [CacheManager sharedManager];
        [manager cacheModelArray:arr_tmp toPath:[Util getTmpDirectory] withName:buy_cache];
    }
}

更新

我们知道,如果vc1push到vc2vc2pop到vc1,那么vc2会被系统回收。

我的问题是当vc2弹出到vc1时,viewWillDisappear中的方法是否会中断?

如果 localDataToSandbox 有一个 closure/block 捕获 self,它将被调用回那个闭包,而在另一种情况下(你的情况 - 当你 不会 有那个闭包来捕获自己),它将被 从堆栈导航层次结构中删除 并且没有保证 localDataToSandbox 将完成其实际运行时间。

意思是,使用闭包可以解决您的问题,并且 self 将被捕获。