小编Mic*_*ubs的帖子

如何使用Swift中的扩展协议公开Obj-C类上的现有属性

在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类型公开这些类型的现有属性,还是我们必须实现具有不同名称的代理属性?

protocols objective-c ios swift

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

标签 统计

ios ×1

objective-c ×1

protocols ×1

swift ×1