在Swift 1.1中,我们能够使用下面的代码编译和工作,我们通过扩展添加的协议公开现有的Objective-C属性.我们还有一些扩展处理财产的地方.
@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
}
}
}
Run Code Online (Sandbox Code Playgroud)
当尝试使用XCode 6.3和Swift 1.2编译此代码时,我们收到以下错误Type 'UIButton' does not conform to the protocol 'Enableable'.UIImageView扩展似乎编译得很好.
有没有办法从Objective-C类型公开这些类型的现有属性,还是我们必须实现具有不同名称的代理属性?