feat: resolve memory issue

This commit is contained in:
dscyrescotti
2024-06-10 23:11:11 +07:00
parent 2e254dc4af
commit 09b97da1fe
5 changed files with 17 additions and 16 deletions

View File

@@ -8,9 +8,9 @@
import SwiftUI
struct CanvasView: UIViewControllerRepresentable {
@EnvironmentObject var tool: Tool
@EnvironmentObject var canvas: Canvas
@EnvironmentObject var history: History
@ObservedObject var tool: Tool
@ObservedObject var canvas: Canvas
@ObservedObject var history: History
func makeUIViewController(context: Context) -> CanvasViewController {
CanvasViewController(tool: tool, canvas: canvas, history: history)

View File

@@ -27,17 +27,17 @@ struct MemoView: View {
}
var body: some View {
CanvasView()
CanvasView(tool: tool, canvas: canvas, history: history)
.ignoresSafeArea()
.overlay(alignment: .trailing) {
PenDock()
PenDock(tool: tool, canvas: canvas)
}
.overlay(alignment: .bottomLeading) {
zoomControl
}
.disabled(textFieldState)
.overlay(alignment: .top) {
Toolbar(memo: memo, size: size)
Toolbar(size: size, memo: memo, canvas: canvas, history: history)
}
.disabled(canvas.state == .loading || canvas.state == .closing)
.overlay {
@@ -50,9 +50,6 @@ struct MemoView: View {
EmptyView()
}
}
.environmentObject(tool)
.environmentObject(canvas)
.environmentObject(history)
}
@ViewBuilder

View File

@@ -8,8 +8,8 @@
import SwiftUI
struct PenDock: View {
@EnvironmentObject var tool: Tool
@EnvironmentObject var canvas: Canvas
@ObservedObject var tool: Tool
@ObservedObject var canvas: Canvas
let width: CGFloat = 90
let height: CGFloat = 30

View File

@@ -10,9 +10,9 @@ import Foundation
struct Toolbar: View {
@Environment(\.dismiss) var dismiss
@EnvironmentObject var history: History
@EnvironmentObject var canvas: Canvas
@ObservedObject var canvas: Canvas
@ObservedObject var history: History
@State var memo: MemoObject
@State var title: String
@@ -20,9 +20,11 @@ struct Toolbar: View {
let size: CGFloat
init(memo: MemoObject, size: CGFloat) {
self.memo = memo
init(size: CGFloat, memo: MemoObject, canvas: Canvas, history: History) {
self.size = size
self.memo = memo
self.canvas = canvas
self.history = history
self.title = memo.title
}
@@ -136,6 +138,7 @@ struct Toolbar: View {
}
withPersistence(\.backgroundContext) { context in
try? context.saveIfNeeded()
context.refreshAllObjects()
DispatchQueue.main.async {
withAnimation {
canvas.state = .closed

View File

@@ -33,6 +33,7 @@ struct MemosView: View {
MemoView(memo: memo)
.onDisappear {
withPersistence(\.viewContext) { context in
try context.saveIfNeeded()
context.refreshAllObjects()
}
}