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
+3 -3
View File
@@ -8,9 +8,9 @@
import SwiftUI import SwiftUI
struct CanvasView: UIViewControllerRepresentable { struct CanvasView: UIViewControllerRepresentable {
@EnvironmentObject var tool: Tool @ObservedObject var tool: Tool
@EnvironmentObject var canvas: Canvas @ObservedObject var canvas: Canvas
@EnvironmentObject var history: History @ObservedObject var history: History
func makeUIViewController(context: Context) -> CanvasViewController { func makeUIViewController(context: Context) -> CanvasViewController {
CanvasViewController(tool: tool, canvas: canvas, history: history) CanvasViewController(tool: tool, canvas: canvas, history: history)
+3 -6
View File
@@ -27,17 +27,17 @@ struct MemoView: View {
} }
var body: some View { var body: some View {
CanvasView() CanvasView(tool: tool, canvas: canvas, history: history)
.ignoresSafeArea() .ignoresSafeArea()
.overlay(alignment: .trailing) { .overlay(alignment: .trailing) {
PenDock() PenDock(tool: tool, canvas: canvas)
} }
.overlay(alignment: .bottomLeading) { .overlay(alignment: .bottomLeading) {
zoomControl zoomControl
} }
.disabled(textFieldState) .disabled(textFieldState)
.overlay(alignment: .top) { .overlay(alignment: .top) {
Toolbar(memo: memo, size: size) Toolbar(size: size, memo: memo, canvas: canvas, history: history)
} }
.disabled(canvas.state == .loading || canvas.state == .closing) .disabled(canvas.state == .loading || canvas.state == .closing)
.overlay { .overlay {
@@ -50,9 +50,6 @@ struct MemoView: View {
EmptyView() EmptyView()
} }
} }
.environmentObject(tool)
.environmentObject(canvas)
.environmentObject(history)
} }
@ViewBuilder @ViewBuilder
+2 -2
View File
@@ -8,8 +8,8 @@
import SwiftUI import SwiftUI
struct PenDock: View { struct PenDock: View {
@EnvironmentObject var tool: Tool @ObservedObject var tool: Tool
@EnvironmentObject var canvas: Canvas @ObservedObject var canvas: Canvas
let width: CGFloat = 90 let width: CGFloat = 90
let height: CGFloat = 30 let height: CGFloat = 30
+7 -4
View File
@@ -11,8 +11,8 @@ import Foundation
struct Toolbar: View { struct Toolbar: View {
@Environment(\.dismiss) var dismiss @Environment(\.dismiss) var dismiss
@EnvironmentObject var history: History @ObservedObject var canvas: Canvas
@EnvironmentObject var canvas: Canvas @ObservedObject var history: History
@State var memo: MemoObject @State var memo: MemoObject
@State var title: String @State var title: String
@@ -20,9 +20,11 @@ struct Toolbar: View {
let size: CGFloat let size: CGFloat
init(memo: MemoObject, size: CGFloat) { init(size: CGFloat, memo: MemoObject, canvas: Canvas, history: History) {
self.memo = memo
self.size = size self.size = size
self.memo = memo
self.canvas = canvas
self.history = history
self.title = memo.title self.title = memo.title
} }
@@ -136,6 +138,7 @@ struct Toolbar: View {
} }
withPersistence(\.backgroundContext) { context in withPersistence(\.backgroundContext) { context in
try? context.saveIfNeeded() try? context.saveIfNeeded()
context.refreshAllObjects()
DispatchQueue.main.async { DispatchQueue.main.async {
withAnimation { withAnimation {
canvas.state = .closed canvas.state = .closed
+1
View File
@@ -33,6 +33,7 @@ struct MemosView: View {
MemoView(memo: memo) MemoView(memo: memo)
.onDisappear { .onDisappear {
withPersistence(\.viewContext) { context in withPersistence(\.viewContext) { context in
try context.saveIfNeeded()
context.refreshAllObjects() context.refreshAllObjects()
} }
} }