【问题标题】:Core Location and UITableView performance issues in iOS 8iOS 8 中的核心位置和 UITableView 性能问题
【发布时间】:2015-08-28 19:16:09
【问题描述】:

我有一个包含两个视图的视图控制器:一个使用 Google Maps API 的 地图视图 和一个 UITableView

视图控制器从特定位置的特定半径内的 Google 地图获取位置对象列表,并将它们绘制在地图视图上作为标记,将 UITableView 绘制为 UITableViewCells。

然后用户可以点击一个按钮在这两个视图之间进行转换。

这在 iOS 7 中运行得非常顺利。但是在 iOS 8 中,如果我通过在我的 .plist 中设置请求权限键值对(在我的情况下为 NSLocationWhenInUseUsageDescription)来请求用户的位置权限,那么当我从地图视图到 UITableView,尝试滚动 UITableView 时也会出现延迟。

只要我删除 .plist 中的 NSLocationWhenInUseUsageDescription 键,它就可以正常工作。

我已尝试删除所有单元格配置,但即使加载没有单元格的 UITableView 也会存在延迟。

这是我删除所有单元格配置后的tableView:cellForRowAtIndexPath 方法:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{   
        MyTableCell *cell = [tableView dequeueReusableCellWithIdentifier:@"MyTableCell" forIndexPath:indexPath];

        if (!cell) {
            cell = [[StoreCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"MyTableCell"];
        }

        return cell;
}

有没有人遇到过类似的问题?我想知道这是否是 iOS 8 中的错误。

很抱歉这篇文章太长了,但只是想尽可能详尽。

谢谢!!

【问题讨论】:

    标签: objective-c uitableview google-maps ios8 core-location


    【解决方案1】:

    解决了这个问题。事实证明,我从未停止 locationManager 更新当前用户位置,因此didUpdateLocations 委托方法被连续调用并消耗资源。一旦我将stopUpdatingLocation 方法发送给位置管理器,它就解决了问题

    【讨论】:

      猜你喜欢
      • 2014-12-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-09-12
      • 2019-08-01
      • 2012-01-29
      • 2015-04-13
      • 1970-01-01
      相关资源
      最近更新 更多