iOS 如果位置服务打开,表视图滚动滞后

iOS Tableview scroll lagging if location services are ON

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

现在,当我调用一个函数时,该函数使用 self.locationManager.location 获取表格视图每个单元格 内的位置 。表格视图滚动滞后且不稳定。 但是,如果我关闭对应用程序的位置访问,一切都会顺利进行!

我知道通常由于对 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 和经纬度方法发布数据的地方基本上执行以下操作:

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

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

你应该在没有手机的情况下获得位置,然后调用 tableview.reloaddata()

p/s:我觉得你应该分享你的代码,这样很容易帮助

因此,事实证明 locationManager.location 方法非常昂贵,特别是在高频使用时(就像这里的情况一样)。去解决它。我缓存了来自位置管理器的位置,并指向所有应用程序组件,甚至 table 单元 使用缓存的位置 而不是每次都窃听位置管理器。

感谢大家的帮助。