diff --git a/Services/UTMAppleVirtualMachine.swift b/Services/UTMAppleVirtualMachine.swift index 4917dc81a9..89d24688a2 100644 --- a/Services/UTMAppleVirtualMachine.swift +++ b/Services/UTMAppleVirtualMachine.swift @@ -582,6 +582,8 @@ final class UTMAppleVirtualMachine: UTMVirtualMachine { throw UTMAppleVirtualMachineError.operatingSystemInstallNotSupported #endif } catch { + progressObserver = nil + installProgress = nil await stopAccesingResources() delegate?.virtualMachine(self, didCompleteInstallation: false) state = .stopped diff --git a/Services/UTMRegistry.swift b/Services/UTMRegistry.swift index 1b5e695179..508fdbf345 100644 --- a/Services/UTMRegistry.swift +++ b/Services/UTMRegistry.swift @@ -37,8 +37,9 @@ class UTMRegistry: NSObject { @Published private var entries: [String: UTMRegistryEntry] { didSet { let toAdd = entries.keys.filter({ !changeListeners.keys.contains($0) }) - for key in toAdd { - let entry = entries[key]! + .compactMap { entries[$0] } + for entry in toAdd { + let key = entry.uuid.uuidString changeListeners[key] = entry.objectWillChange .debounce(for: .seconds(1), scheduler: DispatchQueue.global(qos: .utility)) .sink { [weak self, weak entry] in @@ -122,8 +123,7 @@ class UTMRegistry: NSObject { /// - Parameter entries: All entries to commit private func commitAll(entries: [String: UTMRegistryEntry]) { var newSerializedEntries: [String: Any] = [:] - for key in entries.keys { - let entry = entries[key]! + for entry in entries.values { commit(entry: entry, to: &newSerializedEntries) } serializedEntries = newSerializedEntries