diff --git a/Memola/Canvas/Contexts/GraphicContext.swift b/Memola/Canvas/Contexts/GraphicContext.swift index 8cdd836..38dc787 100644 --- a/Memola/Canvas/Contexts/GraphicContext.swift +++ b/Memola/Canvas/Contexts/GraphicContext.swift @@ -59,7 +59,7 @@ final class GraphicContext: @unchecked Sendable { eraserStrokes.remove(eraserStroke) withPersistence(\.backgroundContext) { [weak eraserStroke] context in guard let eraserStroke else { return } - for penStroke in eraserStroke.penStrokes { + for penStroke in eraserStroke.penStrokes.allObjects { penStroke.eraserStrokes.remove(eraserStroke) if let object = eraserStroke.object { penStroke.object?.erasers.remove(object) @@ -94,7 +94,7 @@ final class GraphicContext: @unchecked Sendable { eraserStrokes.insert(eraserStroke) withPersistence(\.backgroundContext) { [weak eraserStroke] context in guard let eraserStroke else { return } - for penStroke in eraserStroke.penStrokes { + for penStroke in eraserStroke.penStrokes.allObjects { penStroke.eraserStrokes.insert(eraserStroke) if let object = eraserStroke.object { penStroke.object?.erasers.add(object) diff --git a/Memola/Canvas/Geometries/Stroke/Strokes/EraserStroke.swift b/Memola/Canvas/Geometries/Stroke/Strokes/EraserStroke.swift index c9552ad..a4a2451 100644 --- a/Memola/Canvas/Geometries/Stroke/Strokes/EraserStroke.swift +++ b/Memola/Canvas/Geometries/Stroke/Strokes/EraserStroke.swift @@ -34,7 +34,7 @@ final class EraserStroke: Stroke, @unchecked Sendable { weak var graphicContext: GraphicContext? var finishesSaving: Bool = false - var penStrokes: Set = [] + var penStrokes: NSHashTable = .weakObjects() init( bounds: [CGFloat], @@ -112,7 +112,7 @@ final class EraserStroke: Stroke, @unchecked Sendable { for stroke in graphicContext.tree.search(box: _quad.quadBox) { if let _penStroke = stroke.stroke(as: PenStroke.self), !_penStroke.eraserStrokes.contains(self) { _penStroke.eraserStrokes.insert(self) - penStrokes.insert(_penStroke) + penStrokes.add(_penStroke) if let penStroke = _penStroke.object { penStroke.erasers.add(eraser) eraser.strokes.add(penStroke)