Я пытаюсь создать реализацию MKMapViewDelegate по умолчанию, используя условное расширение следующим образом:
extension MKMapViewDelegate where Self: NSObject {
func mapView(_ mapView: MKMapView, viewFor annotation: MKAnnotation) -> MKAnnotationView? {
...
}
func mapView(_ mapView: MKMapView, rendererFor overlay: MKOverlay) -> MKOverlayRenderer {
...
}
}
Однако, когда я компилирую код, я получаю предупреждение
Не - '@ objc' метод 'mapView (_: viewFor :)' не удовлетворяет необязательному требованию протокола '@objc' MKMapViewDelegate '
Я ожидал, что соответствие «Я» NSObject будет означать, что предупреждение не появится. Помимо предупреждения, методы делегата не вызываются, даже если экземпляр делегата является UIViewController и, следовательно, соответствует NSObject.
Я неправильно понимаю, как «где» работает в расширениях?