弹出一个有异步任务的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];
}
}
更新
我们知道,如果vc1
push到vc2
,vc2
pop到vc1
,那么vc2
会被系统回收。
我的问题是当vc2
弹出到vc1
时,viewWillDisappear
中的方法是否会中断?
如果 localDataToSandbox
有一个 closure/block 捕获 self
,它将被调用回那个闭包,而在另一种情况下(你的情况 - 当你 不会 有那个闭包来捕获自己),它将被 从堆栈导航层次结构中删除 并且没有保证
localDataToSandbox
将完成其实际运行时间。
意思是,使用闭包可以解决您的问题,并且 self 将被捕获。
当我弹出 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];
}
}
更新
我们知道,如果vc1
push到vc2
,vc2
pop到vc1
,那么vc2
会被系统回收。
我的问题是当vc2
弹出到vc1
时,viewWillDisappear
中的方法是否会中断?
如果 localDataToSandbox
有一个 closure/block 捕获 self
,它将被调用回那个闭包,而在另一种情况下(你的情况 - 当你 不会 有那个闭包来捕获自己),它将被 从堆栈导航层次结构中删除 并且没有保证
localDataToSandbox
将完成其实际运行时间。
意思是,使用闭包可以解决您的问题,并且 self 将被捕获。