Avatar
今回のケースは本質的に @escaping じゃないといけないのでだめそうですね。
10:04 AM
↓みたいにすればいいのかな・・・。 struct Updater<Object: AnyObject, Target> { let object: Object let keyPath: ReferenceWritableKeyPath<Object, Target> func update(_ body: @escaping (inout Target) throws -> Void) rethrows { DispatchQueue.main.async { try body(&object[keyPath: keyPath]) } } }