mirror of
https://github.com/dscyrescotti/Memola.git
synced 2026-05-11 10:20:04 +02:00
feat: use NSHashTable to avoid memory leak
This commit is contained in:
@@ -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)
|
||||
|
||||
@@ -34,7 +34,7 @@ final class EraserStroke: Stroke, @unchecked Sendable {
|
||||
weak var graphicContext: GraphicContext?
|
||||
|
||||
var finishesSaving: Bool = false
|
||||
var penStrokes: Set<PenStroke> = []
|
||||
var penStrokes: NSHashTable<PenStroke> = .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)
|
||||
|
||||
Reference in New Issue
Block a user