串行创建多个 MKMapView 快照

Create multiple MKMapView snapshots serially

我编写并使用 THIS CLASS 创建带有自定义注释的 MKMapView 的小快照图像,并将它们设置在 UITableViewCell 中的 UIImageView 中。我就是这样写的,调用即忘,不用太担心内存消耗。

工作原理:

问题

创建地图,并将完成的图像设置到图像视图的过程绝对没问题。但是,当 table 中有超过 1 个单元格需要绘制这些不同的快照时,每个单元格都会创建一个新的 CellMapFactory 实例,这又会向应用程序 [= 添加一个新的 MKMapView 70=],对于请求的每个快照。这会疯狂地增加内存使用量。

期望的解决方案

我想CellMapFactory 连续创建这些快照。例如,如果我的 table 中的 20 个单元格需要 20 个唯一的快照,CellMapFactory 必须以串行方式处理它们(队列?),并使用相同的 MKMapView 一次创建一个快照.在我看来(也许我错了),这将有助于极大地限制内存消耗。

这是一个示例屏幕截图,仅供记录:

任何帮助(以及所需解决方案的变体)将不胜感激。谢谢。

如何创建一个快照接口,您的单元格可以使用它来请求快照。当快照不可用时,它为您提供了一种机制来安排快照创建并注册一个委托或完成块,它可以回调以接收创建的图像。

如果您在每个单元格中执行此操作,您可以提供一个占位符图像,该图像将在可用时更新为正确的图像。

在实现中,只需将请求排队,这样您就可以一次处理一个请求。当它们完成时,缓存并触发完成 delegate/block。不确定您可以 运行 在后台执行此任务多少?潜在地,您可以 运行 多个线程,让您控制使用多少 MKMapView,从而平衡内存与性能。