Сложная утечка памяти SwifUI в forEach с EnviromentObject - PullRequest
0 голосов
/ 26 апреля 2020

У меня странная утечка памяти с этим кодом:

class Test: ObservableObject {
    @Published var test:[TestStruct] = []

    func getTest() {
        guard let url = URL(string: "https://www.test.com") else {
            return
        }
        URLSession.shared.dataTask(with: url) {(data,_,_) in
            let testReturn = try!
                JSONDecoder().decode([TestStruct].self, from: data!)
            DispatchQueue.main.async {
                withAnimation{
                    self.test = testReturn
                }
            }
        }.resume()
    }
}




struct testView: View {

    @EnvironmentObject var testVar: Test

    var body: some View {
    VStack{
        ForEach(self.testVar.test) { TestMe in
            Text("print test")
        }
    }
    }
}

, когда fun c getTest () вызывается много раз, forEach l oop увеличивает память. Когда TestVar EnvironmentObject обновляется новым вызовом Json, он не создает новые экземпляры, а просто обновляет foreach l oop

Я не знаю, что может создать эту проблему, потому что код кажется мне правильным , У кого-нибудь был подобный опыт?

Большое спасибо

...