Próbuję utworzyć domyślną implementację danego MKMapViewDelegate za pomocą rozszerzenia warunkową następująco:Non - metoda „@ objc” nie spełnia wymogu dodatkowego protokołu „@objc” z rozszerzeniem warunkowego
extension MKMapViewDelegate where Self: NSObject {
func mapView(_ mapView: MKMapView, viewFor annotation: MKAnnotation) -> MKAnnotationView? {
...
}
func mapView(_ mapView: MKMapView, rendererFor overlay: MKOverlay) -> MKOverlayRenderer {
...
}
}
jednak kiedy skompilować kod otrzymuję ostrzeżenie
Non - '@ objc' metoda 'MapView (_: viewFor :)' nie spełnia wymogu dodatkowego protokołu '@objc' 'MKMapViewDelegate'
Spodziewałem się, że zgodność z "Własnością" w NSObject oznaczałaby, że ostrzeżenie nie wystąpiłoby. Na górze ostrzeżenia metody delegatów nie są wywoływane, mimo że instancja delegata jest kontrolerem UIViewController i dlatego jest zgodna z NSObject.
Czy nie rozumiem, jak "gdzie" działa w rozszerzeniach?
Możliwe duplikat [Non - metoda '@ objc' nie spełniają wymogu dodatkowego protokołu '@objc'] (http://stackoverflow.com/questions/39487168/non -objc-method-does-not-satisfy-optional-requirement-of-objc-protokół) –