objective C:离开ViewController后停止加载TableView

时间:2017-06-15 08:36:52

标签: ios objective-c

在调用API创建/更新UITableView之后,我有两个带有navigationController.On页面A的UIViewController A和B.在A上选择一个单元格后,控件转到B.另外在B页面上调用API并呈现tableView。在B页面上,API有一些图像,因此渲染tableview需要时间。在调用API&在渲染表视图之前,如果我点击后退按钮,控制转到A页面并点击A的API。但是我注意到B页面中的表视图仍然尝试渲染。因此,有时我的应用程序崩溃的原因是“DataSource未设置”。

2 个答案:

答案 0 :(得分:0)

当您离开(点击)ViewController时,它必须被解除分配,它似乎是一个内存泄漏错误,所以要检查这个将此代码添加到B ViewController

deinit {
   print(1)
}

如果一切正常,它将打印“1”,如果没有,请检入B控制器 - 你有一些块(关闭器)吗? 在块中使用“自我”,如果是 - 您是否使用“弱自我”?

__weak MyObject *weakSelf = self;

必须解决您的问题。

答案 1 :(得分:0)

我认为你没有在cellForRowAt indexpath方法中为延迟加​​载图像的imageview创建弱引用。尝试在数据源方法中使用以下代码,它将对您有所帮助。

-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
CustomTableviewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"cell"];
__weak UIImageView *weakImageView = cell.yourImageView;
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
    weakImageView.image = [UIImage imageWithData:[NSData dataWithContentsOfURL:[NSURL URLWithString:@"url"]]];
});
return cell;
}