Bonjour,
J’ai un problème de fuites mémoires avec des propriétés de type Type Color, que ce soit dans une classe ou dans une structure.
Mon projet principal est beaucoup plus complet que le projet de test ci-dessous et j’ai cette structure Param qui me permet de mettre des paramètres tels que la couleur du texte, des couleurs de fond, des booléens, des float, etc que je dois pouvoir utiliser dans la vue principale, mais modifier dans de multiples sous vues.
Comme il y avait des fuites avec la structure j’ai essayé de la remplacer par une classe, mais les fuites mémoires sont toujours présentes.
Et j’ai aussi essayé avec l’ancienne manière en utilisant ObservableObject, et @ObservedObject, il y a aussi des fuites mémoire.
J’ai refais un petit projet très simple pour essayer de comprendre d’ou viennent les fuites mémoires mais je n’arrive pas à régler le problème.
Est ce que j’ai fait des erreurs ou est c’est un bug côté Apple ?
J’ai vu les fuites avec instrument utilisé sur la mémoire.
Au premier changement il ne passe pas forcément grand chose, mais si on essaye une seconde fois il y a des fuites mémoires, et chaque essai supplémentaire en rajoute de nouvelles.
Ma classe
import SwiftUI
@Observable
class ParamClasse{
var couleurTexte:Color = .green
init(couleurTexte: Color) {
self.couleurTexte = couleurTexte
}
}
Ma vue principale
import SwiftUI
struct MainView: View {
var paramClass:ParamClasse = ParamClasse(couleurTexte: .blue)
var body: some View {
VStack {
Image(systemName: "globe")
.imageScale(.large)
.foregroundStyle(.tint)
Text("Hello, world!")
.foregroundStyle(paramClass.couleurTexte)
ModifierCouleurClassView(paramClasse: paramClass)
}
.padding()
}
}
#Preview {
MainView()
}
Ma sous vue qui permet de modifier la couleur
import SwiftUI
struct ModifierCouleurClassView: View {
@Bindable var paramClasse:ParamClasse
var body: some View {
ColorPicker("Modifier couleur texte", selection: $paramClasse.couleurTexte)
}
}
#Preview {
ModifierCouleurClassView(paramClasse: ParamClasse(couleurTexte: .red))
}
