Objective-Cを使用しているプロジェクトでXcodeのバージョンを上げたら下記のような警告がでませんでしたか?
'initWithOverlay:' is deprecated: first deprecated in iOS 7.0
このdeprecatedはMKOverlayViewを継承いているMKPolygonViewやMKCircleViewのイニシャライザが対象になっていると思います。
おそらくMKMapViewDelegateプロトコルのmapView:viewForOverlay:またはmapView:didAddOverlayViews:メソッドで出ていると思います。では前者を例にしてみましょう。
- (MKOverlayView *)mapView:(MKMapView *)mapView viewForOverlay:(id<MKOverlay>)overlay
{
if ([overlay isKindOfClass:[MKPolyline class]]) {
MKPolylineView *view = [[MKPolylineView alloc] initWithOverlay:overlay]; // Warning!
view.strokeColor = [UIColor redColor];
return view;
} else if ([overlay isKindOfClass:[MKPolygon class]]) {
MKPolygonView *view = [[MKPolygonView alloc] initWithOverlay:overlay]; // Warning!
view.fillColor = [UIColor blueColor];
return view;
}
return nil;
}
MKMapViewDelegate Protocol Reference
Deprecation Statement
Implement the mapView:rendererForOverlay: method instead.
上記のApple公式リファレンスの通りmapView:rendererForOverlay:またはmapView:didAddOverlayRenderers:メソッドに置き換えましょう。こっちはSwiftで書きましょう。
func mapView(mapView: MKMapView, rendererForOverlay overlay: MKOverlay) -> MKOverlayRenderer {
if overlay is MKPolyline {
let render = MKPolylineRenderer(overlay: overlay)
render.strokeColor = UIColor.redColor()
return render
} else if overlay is MKPolygon {
let render = MKPolygonRenderer(overlay: overlay)
render.fillColor = UIColor.blueColor()
return render
}
return nil
}
mapView:viewForOverlay:ではView(UIView)そのものを返しているのに対し、mapView:rendererForOverlay:は描画するためのレンダラー(NSObject)を返しています。
パッと見何が変わったのかもわからないくらいの変化ですね。なぜこのような変更があったのか、おそらくMKOverlayを継承させたCustomOverlayを使えるようにするためだと思います。