【发布时间】:2016-12-31 06:39:21
【问题描述】:
我正在尝试使用条件扩展来创建 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'的可选要求
我预计 'Self' 与 NSObject 的一致性意味着不会发生警告。除了警告之外,即使委托实例是 UIViewController 并因此符合 NSObject,也不会调用委托方法。
我是否误解了“在哪里”在扩展程序中的工作原理?
【问题讨论】: