我将尝试设置我的应用程序,以便它可以使用Apple地图或Google地图,所以我想我会有这样的事情:
class AppleMap: MKMapView, MyMapProtocol {
var delegate: MyMapDelegateProtocol
...
}
class GoogleMap: GMSMapView, MyMapProtocol {
var delegate: MyMapDelegateProtocol
...
}
MKMapView和GMSMapView都有代表。许多对这些代表的调用只会被翻译并传递给Apple / GoogleMap委托,但有些需要独特处理(例如viewForAnnotaion)
问题是MKMapViewDelegate和GMSMapViewDelegate应该在哪里实现?
我正在考虑AppleMap和GoogleMap类,但我认为这是一件相当常见的事情(包装一个在适配器类中有委托的类),但我没有看到任何记录的最佳实践。
答案 0 :(得分:1)
您可以将它们实现为独立的模型类,以便它们的代码保持封装在应用程序的其余部分中。这些对象的变量可以存在于自定义MapChildViewController对象中,该对象只管理这些映射之间的逻辑。允许您在整个应用中重复使用此逻辑。这听起来怎么样?