@@ -178,18 +178,11 @@ class AccessoryManager: ObservableObject, MqttClientProxyManagerDelegate {
178178 self . state = . uninitialized
179179 self . mqttManager. delegate = self
180180
181- // Listen for system memory warnings to proactively release Core Data object data
181+ // Listen for system memory warnings to proactively save pending changes
182182 NotificationCenter . default. addObserver ( forName: UIApplication . didReceiveMemoryWarningNotification, object: nil , queue: . main) { [ weak self] _ in
183183 guard let self else { return }
184- self . context. refreshAllObjects ( )
185- Logger . data. warning ( " ⚠️ [AccessoryManager] Memory warning — refreshed viewContext ( \( self . context. registeredObjects. count) registered objects) " )
186- Task {
187- let bgContext = await MeshPackets . shared. backgroundContext
188- await bgContext. perform {
189- bgContext. refreshAllObjects ( )
190- Logger . data. warning ( " ⚠️ [MeshPackets] Memory warning — refreshed backgroundContext ( \( bgContext. registeredObjects. count) registered objects) " )
191- }
192- }
184+ try ? self . context. save ( )
185+ Logger . data. warning ( " ⚠️ [AccessoryManager] Memory warning — saved context " )
193186 }
194187 }
195188
@@ -303,11 +296,9 @@ class AccessoryManager: ObservableObject, MqttClientProxyManagerDelegate {
303296 await wantDatabaseGate. cancelAll ( )
304297 await wantDatabaseGate. reset ( )
305298
306- // Re-fault all registered objects on the viewContext to release their in-memory data.
307- // Objects stay registered but their property storage is freed, which prevents unbounded
308- // memory growth across disconnect/reconnect cycles on long-running sessions.
309- context. refreshAllObjects ( )
310- Logger . data. info ( " 💾 [AccessoryManager] Refreshed viewContext on disconnect ( \( self . context. registeredObjects. count) registered objects) " )
299+ // Save any pending changes and let SwiftData manage object lifecycle on disconnect.
300+ try ? context. save ( )
301+ Logger . data. info ( " 💾 [AccessoryManager] Saved context on disconnect " )
311302
312303 // Turn off the disconnect buttons
313304 allowDisconnect = false
0 commit comments