gpt4 book ai didi

iphone - MKMapView 和 dequeueReusableAnnotationViewWithIdentifier :

转载 作者:行者123 更新时间:2023-12-03 19:43:08 24 4
gpt4 key购买 nike

我有一个 MKMapView,屏幕上同时显示大约 1000 个 MKPinAnnotationView。

它的滚动性能非常慢。

我正在尝试将我的注释 View 适本地出列,如下所示:

- (MKAnnotationView *)mapView:(MKMapView *)mapView viewForAnnotation:(id <MKAnnotation>)annotation {
static NSString *viewIdentifier = @"annotationView";
MKPinAnnotationView *annotationView = (MKPinAnnotationView *) [mapView dequeueReusableAnnotationViewWithIdentifier:viewIdentifier];
if (annotationView == nil) {
annotationView = [[[MKPinAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:viewIdentifier] autorelease];
}

return annotationView;
}

但是我的注释 View 从未被重用!我的 map 上同时有 1000 个 MKPinAnnotationView 实例。我不禁觉得这导致了性能下降。

这是使可重用注释 View 出队的正确方法吗?它们是否没有被重用,因为它们同时在同一屏幕上,因此需要单独的实例?

关于使用大量屏幕图钉加快滚动性能有什么技巧吗?

最佳答案

如果您的 map 一直缩小,那么它不会无缘无故地删除图钉。仅当图钉不可见时才会将其取下。

根据我的经验,1000 个 map 图钉远远超出了基本上任何设备的稳定上限,更不用说旧设备了。

像 iPhone 3G 这样的旧设备甚至可能会在 100-150 之间达到上限,然后你就会开始看到崩溃(当然这取决于你的应用程序正在做什么)。

我编写了一个广泛使用 MKMapView 的应用程序,我被迫设置逻辑来根据设备类型限制 map 上可见的图钉数量。

有两种可能的解决方案

1)限制 map 的缩放范围,以便用户无法缩小到同时看到每个图钉的程度(我实际上以前没有这样做过,所以我不知道是否可能,但这将是一个想法)。

2)按照建议创建过滤器,限制显示的引脚。

关于iphone - MKMapView 和 dequeueReusableAnnotationViewWithIdentifier :,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1403682/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com