Swift 协议方法与超类冲突 属性
Swift protocol method conflicts with superclass property
我正在尝试子class NSColorPicker
并采用 NSColorPickingCustom
协议。
NSColorPicker
有一些简单的计算属性,例如
var buttonToolTip: String { get }
但是NSColorPickingCustom
需要同名的方法,比如
func buttonToolTip() -> String
如果我实现方法buttonToolTop
,它与同名的superclassgetter冲突。如果我覆盖计算的 属性,我就不符合协议。如果我尝试同时使用 both 那么它们当然会相互冲突。
有什么方法可以让 class 在 subclassing NSColorPicker
时采用该协议?
NSColorPicker
已经为您提供了 NSColorPickingDefault
一致性(这似乎是 buttonToolTip()
要求的来源)。仅覆盖计算的 属性 似乎工作正常:
import Cocoa
class C: NSColorPicker, NSColorPickingCustom
{
override var buttonToolTip: String { return "test" }
// NSColorPickingCustom
func supportsMode(mode: NSColorPanelMode) -> Bool { return false }
func currentMode() -> NSColorPanelMode { return .NSNoModeColorPanel }
func provideNewView(initialRequest: Bool) -> NSView { return NSView() }
func setColor(newColor: NSColor) { }
}
let c = C()
c.buttonToolTip // returns "test"
let d: NSColorPickingDefault = C()
d.buttonToolTip() // returns "test"
我正在尝试子class NSColorPicker
并采用 NSColorPickingCustom
协议。
NSColorPicker
有一些简单的计算属性,例如
var buttonToolTip: String { get }
但是NSColorPickingCustom
需要同名的方法,比如
func buttonToolTip() -> String
如果我实现方法buttonToolTop
,它与同名的superclassgetter冲突。如果我覆盖计算的 属性,我就不符合协议。如果我尝试同时使用 both 那么它们当然会相互冲突。
有什么方法可以让 class 在 subclassing NSColorPicker
时采用该协议?
NSColorPicker
已经为您提供了 NSColorPickingDefault
一致性(这似乎是 buttonToolTip()
要求的来源)。仅覆盖计算的 属性 似乎工作正常:
import Cocoa
class C: NSColorPicker, NSColorPickingCustom
{
override var buttonToolTip: String { return "test" }
// NSColorPickingCustom
func supportsMode(mode: NSColorPanelMode) -> Bool { return false }
func currentMode() -> NSColorPanelMode { return .NSNoModeColorPanel }
func provideNewView(initialRequest: Bool) -> NSView { return NSView() }
func setColor(newColor: NSColor) { }
}
let c = C()
c.buttonToolTip // returns "test"
let d: NSColorPickingDefault = C()
d.buttonToolTip() // returns "test"