我希望默认属性为UIImageView
,即isFlipped
。我可以通过继承UIImageView
并添加一个属性isFlipped
来实现。
但是我想为此用户使用协议和扩展,但它会在一段时间后崩溃。以下是我的代码。我怎样才能正确使用它?感谢
import Foundation
import UIKit
protocol FlipImage {
var isFlipped: Bool { get set }
}
extension UIImageView:FlipImage{
var isFlipped: Bool {
get {
return self.isFlipped
}
set {
self.isFlipped = newValue
}
}
}
答案 0 :(得分:3)
正如Martin R所说,你无法通过类扩展将存储的属性添加到类中。但您可以使用目标C关联对象通过扩展
来完成private var key: Void?
extension UIImageView {
public var isFlipped: Bool? {
get {
return objc_getAssociatedObject(self, &key) as? Bool
}
set {
objc_setAssociatedObject(self,
&key, newValue,
.OBJC_ASSOCIATION_RETAIN_NONATOMIC)
}
}
}