小编Mat*_*ius的帖子

非'@ objc'方法不满足带条件扩展的'@objc'协议的可选要求

我正在尝试使用条件扩展创建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,也不会调用委托方法.

我是否误解了"哪里"在扩展中的作用?

swift swift-extensions

10
推荐指数
1
解决办法
3023
查看次数

标签 统计

swift ×1

swift-extensions ×1