Heim > Fragen und Antworten > Hauptteil
如题:
我再本页面点击cell想要跳转到目标页面:
当前页面:
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
MyGlViewController *glk = [[MyGlViewController alloc]init];
NSString *fileName = [[NSBundle mainBundle]pathForResource:@"dddn" ofType:@"stl"];
glk.curFileName = fileName;
[self.navigationController pushViewController:glk animated:YES];
}
目标页面:
- (void)viewDidLoad {
[super viewDidLoad];
glview = [[GLKView alloc]init];
[self setView:glview];
//此方法内为传过去一个文件地址,然后文本方式读取文件内容,内容,有大量循环存在,所以读取速度很慢,文件超过15MB以后等待时间就很明显了。。而ViewController又需要这些数据去渲染本页面(本页面继承于GLKViewController,用于渲染3d模型),故页面一直停留在上页面等待加载。
[self modelParser:self.curFileName];
}
如上注释所述,在A界面push页面的时候,由于B页面需要先读取数据加载页面,所以视图会停留在A页面,造成一种系统假死的现象,(而我再Cell得点击方法内添加等待提示视图也是不直接显示的,二十等待B页面数据加载完后才显示),请问这种情况该如何处理?
如果表述的不清楚或者您认为的关键所在代码没贴出,请提醒。
大家讲道理2017-04-17 17:31:36
把这个耗时非常明显的任务放到另一个线程中,最简单的就是用GCD的dispatch_asyn函数
[self modelParser:self.curFileName];
ringa_lee2017-04-17 17:31:36
很明显啊。。。。
费时操作不要在 viewDidLoad 里面啊
试下放在 willAppear 或者 didAppear 里面咯。。。
怪我咯2017-04-17 17:31:36
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), {
//做你的事情
dispatch_async(dispatch_get_main_queue(), {
//回到主进程更新ui
})
});