diff --git a/Sources/LuminateDI/Injected.swift b/Sources/LuminateDI/Injected.swift index 8271895..1d64ac2 100644 --- a/Sources/LuminateDI/Injected.swift +++ b/Sources/LuminateDI/Injected.swift @@ -13,20 +13,18 @@ public struct Injected { public init(_ keyPath: KeyPath) { self.keyPath = keyPath - self.observerRef = ObserverRef() - observerRef.id = DIContainer.shared.addObserver(for: keyPath) { - Task { @MainActor in - StateManager.updateViews() + self.observerRef = ObserverRef( + id: DIContainer.shared.addObserver(for: keyPath) { + Task { @MainActor in + StateManager.updateViews() + } } - } + ) } } private final class ObserverRef { - var id: UUID? - deinit { - if let id { - DIContainer.shared.removeObserver(id) - } - } + let id: UUID + init(id: UUID) { self.id = id } + deinit { DIContainer.shared.removeObserver(id) } }