Вы можете сделать следующее:
protocol Position {
var initialPosition: Int { get set }
}
Невозможно просто объявить свойства в расширениях, поэтому вам нужно установить get
и set
.Вы можете просто связать значение:
private var initialPositionKey: UInt = 0
extension Position {
var initialPosition: Int {
get {
return objc_getAssociatedObject(self, &initialPositionKey) as! Int
}
set {
objc_setAssociatedObject(self, &initialPositionKey, newValue, .OBJC_ASSOCIATION_RETAIN)
}
}
}
Затем вы расширяете свой UIView
следующим образом:
extension UIView: Position {}
И работает следующее:
var view = UIView()
view.initialPosition = 5
print (view.initialPosition) // 5