From 838637f29f9464f7882f248d33b8e6bddcd3b428 Mon Sep 17 00:00:00 2001 From: John Estropia Date: Wed, 29 Jul 2026 13:56:43 +0900 Subject: [PATCH] cleanup warnings --- Sources/ObjectMonitor.swift | 23 +++++++++++++++-------- Sources/ObjectObserver.swift | 2 +- 2 files changed, 16 insertions(+), 9 deletions(-) diff --git a/Sources/ObjectMonitor.swift b/Sources/ObjectMonitor.swift index ae183a0..a862191 100644 --- a/Sources/ObjectMonitor.swift +++ b/Sources/ObjectMonitor.swift @@ -72,7 +72,7 @@ public final class ObjectMonitor: Hashable, ObjectRepresentati - parameter observer: an `ObjectObserver` to send change notifications to */ @MainActor - public func addObserver(_ observer: U) + public func addObserver(_ observer: U) where U.ObjectEntityType == O { self.unregisterObserver(observer) @@ -261,7 +261,7 @@ public final class ObjectMonitor: Hashable, ObjectRepresentati } @MainActor - internal func registerObserver( + internal func registerObserver( _ observer: U, willChangeObject: @escaping @Sendable ( _ observer: U, @@ -285,13 +285,17 @@ public final class ObjectMonitor: Hashable, ObjectRepresentati Thread.isMainThread, "Attempted to add an observer of type \(Internals.typeName(observer as AnyObject)) outside the main thread." ) + nonisolated(unsafe) weak let weakObserver = observer as Optional self.registerChangeNotification( &self.willChangeObjectKey, name: Notification.Name.objectMonitorWillChangeObject, toObserver: observer, - callback: { [weak observer] (monitor) -> Void in + callback: { (monitor) -> Void in - guard let object = monitor.object, let observer = observer else { + guard + let observer = weakObserver, + let object = monitor.object + else { return } @@ -302,9 +306,9 @@ public final class ObjectMonitor: Hashable, ObjectRepresentati &self.didDeleteObjectKey, name: Notification.Name.objectMonitorDidDeleteObject, toObserver: observer, - callback: { [weak observer] (monitor, object) -> Void in + callback: { (monitor, object) -> Void in - guard let observer = observer else { + guard let observer = weakObserver else { return } @@ -315,9 +319,12 @@ public final class ObjectMonitor: Hashable, ObjectRepresentati &self.didUpdateObjectKey, name: Notification.Name.objectMonitorDidUpdateObject, toObserver: observer, - callback: { [weak self, weak observer] (monitor, object) -> Void in + callback: { [weak self] (monitor, object) -> Void in - guard let self = self, let observer = observer else { + guard + let self = self, + let observer = weakObserver + else { return } diff --git a/Sources/ObjectObserver.swift b/Sources/ObjectObserver.swift index 2162d81..b1dcd68 100644 --- a/Sources/ObjectObserver.swift +++ b/Sources/ObjectObserver.swift @@ -36,7 +36,7 @@ import CoreData monitor.addObserver(self) ``` */ -public protocol ObjectObserver: AnyObject, Sendable { +public protocol ObjectObserver: AnyObject, SendableMetatype { /** The `DynamicObject` type for the observed object