0

这段代码有一个奇怪的内存泄漏:

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")
        }
    }
    }
}

当 func getTest() 被多次调用时,forEach 循环会增加内存。当 EnvironmentObject testVar 被新的 Json 调用更新时,它不会创建新实例,而只是更新 foreach 循环

我不知道什么会造成这个问题,因为代码在我看来是正确的。有没有人有类似的经历?

非常感谢

4

0 回答 0