我正在尝试使用条件扩展创建MKMapViewDelegate的默认实现,如下所示:
extension MKMapViewDelegate where Self: NSObject {
func mapView(_ mapView: MKMapView, viewFor annotation: MKAnnotation) -> MKAnnotationView? {
...
}
func mapView(_ mapView: MKMapView, rendererFor overlay: MKOverlay) -> MKOverlayRenderer {
...
}
}
Run Code Online (Sandbox Code Playgroud)
但是当我编译代码时,我得到了警告
非'@ objc'方法'mapView(_:viewFor :)'不满足'@objc'协议'MKMapViewDelegate'的可选要求
我期望NSObject对'Self'的一致性意味着警告不会发生.除了警告之外,即使委托实例是UIViewController并且因此符合NSObject,也不会调用委托方法.
我是否误解了"哪里"在扩展中的作用?