这段代码有一个奇怪的内存泄漏:
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 循环
我不知道什么会造成这个问题,因为代码在我看来是正确的。有没有人有类似的经历?
非常感谢