Использование ReferenceWritaleKeyPath
для чтения свойства вызывает ошибку сегментации компилятора.
Я настраиваю помощника, чтобы упростить привязку двух переменных. С помощью OOPer я получил базовую привязку к работе, но если изменить код, как показано ниже, чтобы проверить значения разные перед выполнением привязки у него есть ошибка сегментации.
protocol Bindable: class {
var observers: [NSKeyValueObservation] {get set}
}
extension Bindable {
func bind<Value>(to targetKeyPath: ReferenceWritableKeyPath<Self, Value>, from sourceKeyPath: KeyPath<Self, Value>)
where Self: NSObject {
self.observers.append( self.observe(sourceKeyPath, options: [.initial, .new]) {object, change in
// FAILS: compiler failed due to signal: Segmentation fault: 11
if( self[keyPath:targetKeyPath] != change.newValue ) {
self[keyPath: targetKeyPath] = change.newValue!
}
})
}
}