Я пытаюсь создать реализацию по умолчанию в MKMapViewDelegate, используя условное расширение следующим образом:Non - метод «@ ObjC» не удовлетворяет факультативное требование протокола «@objc» с условным расширением
extension MKMapViewDelegate where Self: NSObject {
func mapView(_ mapView: MKMapView, viewFor annotation: MKAnnotation) -> MKAnnotationView? {
...
}
func mapView(_ mapView: MKMapView, rendererFor overlay: MKOverlay) -> MKOverlayRenderer {
...
}
}
Однако при компиляции кода я получаю предупреждение
Non - '@ ObjC' метод 'MAPview (_: viewFor :) не удовлетворяет дополнительное требование '@objc' протокол 'MKMapViewDelegate'
Я ожидал, что соответствие «Я» для NSObject будет означать, что предупреждение не произойдет. В дополнение к предупреждению методы делегата не вызываются, хотя экземпляр делегата является UIViewController и, следовательно, соответствует NSObject.
Я не понимаю, как «где» работает в расширениях?
Возможный дубликат [Non - метод '@ ObjC' не удовлетворяет факультативное требование о '' @objc протокол] (http://stackoverflow.com/questions/39487168/non -objc-method-does-not-удовлетворить-optional-require-of-objc-protocol) –