如果位置服务处于启用状态,则iOS Tableview滚动滞后

时间:2015-11-11 03:24:13

标签: ios objective-c uitableview location

我有一个应用程序,我使用CLLocationManager实例获取设备的位置。

现在,当我调用一个使用self.locationManager.location的函数来获取tableview的每个单元格中的位置时。 tableview滚动是滞后和波涛汹涌。 但是,如果我关闭位置访问权限到应用程序,一切都很顺利!

我知道桌面视图通常滞后是因为http调用或图像下载处理不当,但如果是这种情况,如果关闭该位置也会发生同样的情况。

有人可以在这里说清楚吗?

在iOS 9.1和iOS 8.4上测试

已更新 cellForRow的代码....

    - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {

UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@“tableRow” forIndexPath:indexPath];

NSMutableDictionary *dict = [NSMutableDictionary dictionary];    

[dict setObjectOrDoNothing: [AppLoc currentLatitude] forKey:@“latitude”];

[dict setObjectOrDoNothing:[AppLoc currentLongitude]  forKey:@“longitude”];

[dict setObjectOrDoNothing:[NSNumber numberWithInteger:indexPath.row]  forKey:@“content”];

[[AppManager serviceManager] postDataWithParams:dict];

return cell;

}

使用AFNetworking和lat发布数据时,long方法主要执行以下操作:

[[AppLocationsManager sharedInstance] currentLocation].coordinate.latitude;

[[AppLocationsManager sharedInstance] currentLocation].coordinate.longitude;

2 个答案:

答案 0 :(得分:0)

你应该获得没有单元格的位置,然后调用tableview.reloaddata()

p / s:我认为你应该分享你的代码,这样很容易提供帮助

答案 1 :(得分:0)

因此,事实证明,locationManager.location方法非常昂贵,特别是在高频率使用时(如此情况)。解决它。我从位置管理器缓存了该位置,并将所有应用程序组件,甚至表格单元格指向使用该缓存位置,而不是每次都在窃听位置管理器。

感谢您的帮助。