W Swift 1.1 udało nam się skompilować kod jak poniżej i pracować tam, gdzie odsłoniliśmy istniejące właściwości Objective-C poprzez protokół dodany przez rozszerzenie. Mieliśmy też kilka, w których nieruchomość jest obsługiwana przez rozszerzenie.Jak odsłonić istniejącą właściwość w klasie Obj-C za pomocą protokołu rozszerzenia w Swift
@objc protocol Enableable: class {
var enabled: Bool { get set }
}
let DisabledAlpha: CGFloat = 0.5
let EnabledAlpha: CGFloat = 1.0
extension UIButton: Enableable {}
extension UIImageView: Enableable {
var enabled: Bool {
get {
return alpha > DisabledAlpha
}
set(enabled) {
alpha = enabled ? EnabledAlpha : DisabledAlpha
}
}
}
Kiedy próbuje skompilować ten kod przy użyciu XCode 6.3, Swift 1.2, otrzymujemy następujący błąd Type 'UIButton' does not conform to the protocol 'Enableable'
. Rozszerzenie UIImageView wydaje się kompilować dobrze.
Czy istnieje sposób na ujawnienie tego rodzaju istniejących właściwości z typu Objective-C lub czy musimy zaimplementować właściwość proxy o innej nazwie?
Dzięki za odpowiedź. Zastanawiałem się, czy to z powodu podpisu, ale nie wiedziałem, co z tym zrobić. Nigdy nie widzieliśmy opcji protokołu @ objc Enableable: class { var enabled: Bool {@objc (isEnabled) get set} } ' –