0

有一点我想知道,也许有人可以用简单的词比医生更好地解释我......

当您想在 MKMapView 上添加覆盖时,您首先添加遵循 MKOverlay 协议的内容。

然后稍后,(MKOverlayView*)mapView:(MKMapView*)mapView viewForOverlay:(id)overlay被调用并且您必须返回一个 MKOverlayView 或继承它的东西。

添加的叠加层的作用是什么,addOverlay因为它不显示任何内容?为什么不直接添加一个子视图,因为它是使用 addSubview 完成的视图,并将显示所需的变量“放入其中”?为什么要运行这样一个两部分的过程?

4

1 回答 1

4

模型-视图-控制器 (MVC) 模式中,存储数据的对象与处理表示的对象是隔离的:实现 MKOverlay 的对象的作用是管理数据存储,而 MKOverlayView 对象的作用是处理表示一张地图。

例如,您可能有一个ApartmentBuilding对象存储有关租户、租金、财产税等数据,并且您可能希望在应用程序中使用该对象,以在地图上显示您的房地产帝国——但您可能还想ApartmentBuilding在计算税单或生成定期维护日历的应用程序中使用相同的数据。

如果为您建模ApartmentBuilding的代码与在地图上显示您的建筑物的代码完全分离,那么您可以将您的ApartmentBuilding模型与不同的视图对象(MaintenanceCalendarView例如,a 或 a )配对,TaxSpreadsheetView并且您的代码更易于维护和重新编写利用。

于 2011-08-29T00:01:07.850 回答