Swift 3 重构:"Type 'NSView' has no member ..." 错误

Swift 3 Refactoring: "Type 'NSView' has no member ..." Error

在 Swift 3 之前,我在我的 NSRulerView 子类中创建了一个 Selector 的私有扩展,如下所示:

private extension Selector {
    static let shouldAddMarker = #selector(NSView.rulerView(_:shouldAdd:shouldAddMarker:))
    static let willAddMarker = #selector(NSView.rulerView(_:willAdd:atLocation:willAddMarker:atLocation:))
    static let didAddMarker = #selector(NSView.rulerView(_:didAdd:didAddMarker:))
}

这很方便,因为我可以简单地使用我的私有简短成员名称来访问选择器,如下所示:

if self.delegate?.respondsToSelector(.shouldAddMarker) == true {
    // I have a delegate and it conforms to the NSRulerMarkerClientViewDelegation protocol.
}

现在我拼命尝试将我现有的 Swift 代码库转换为 3.0,NSView 似乎没有实现上述方法。

我知道 NSRulerMarkerClientViewDelegation 是一个非正式的协议,它声明的方法是作为 NSView 的扩展实现的,但我没有看到任何 API 与 Swift 的变化 2.x 到 3.0 会破坏我现有的选择器。

有人知道我应该从这里去哪里吗?任何建议将不胜感激。

以下是 Swift 3 的新选择器:

private extension Selector {
    static let shouldAddMarker = #selector(NSView.rulerView(_:shouldAdd:))
    static let willAddMarker = #selector(NSView.rulerView(_:willAdd:atLocation:))
    static let didAddMarker = #selector(NSView.rulerView(_:didAdd:))
}