改编后的真实代表应该在哪里实施?

时间:2015-08-19 16:12:25

标签: ios delegates

我将尝试设置我的应用程序,以便它可以使用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类,但我认为这是一件相当常见的事情(包装一个在适配器类中有委托的类),但我没有看到任何记录的最佳实践。

1 个答案:

答案 0 :(得分:1)

您可以将它们实现为独立的模型类,以便它们的代码保持封装在应用程序的其余部分中。这些对象的变量可以存在于自定义MapChildViewController对象中,该对象只管理这些映射之间的逻辑。允许您在整个应用中重复使用此逻辑。这听起来怎么样?