RT,在做蓝牙OBD的项目,其中有需求是从ECU中读取数据流,读取到一条就马上刷新TableView,于是我就写成这样了
    dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
    //获取数据流个数x
        for (int i = 0; i<x; i++)
        {
            //循环读取数据
            NSData * data = getData(i);
            [self.fcArray addObject:data];
            dispatch_async(dispatch_get_main_queue(), ^{
                //读取到数据就马上reloadData
                [self.tableView reloadData];
            });
        }
整个过程就这样,显示什么都没问题,但是我发现在他读取数据的时候,我去滚动tableView的话,tableView滚动会表现得卡卡的,然后经常是好像根本没有滚动到似的,请问这是什么原因
好久没来,更新下答案
首先谢谢大家的帮忙,我这个问题已经解决了,我是设置数据刷新前判断tableView是否在滚动,如果是的话就等等再刷新
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
把reloadData从for循环中移出来,我觉得是这里的原因
你不能读一条就刷新一条,这样势必会卡。
可以这样处理:读一条就把数据更新,但是并不要
reloadData;另外单开一个定时器,比如3秒钟reload一次。insertRowsAtIndexPaths: withRowAnimation 应该是你需要的