[英]SwiftUI not Releasing Memory for Deleted Cells in List
如果您將以下視圖的列表創建為行:
struct ImageCellView: View {
let image: UIImage
init(image: UIImage) {
self.image = image
}
var body: some View {
return Image(uiImage: image).frame(height: 128).clipped()
}
}
刪除單元格后,在添加新單元格之前不會釋放 UIImage 的內存。 查看內存圖,我們可以發現 AGGraphStorage 正在為此保留參考:
即使添加新單元格可以以某種方式釋放內存, UIImage 偶爾也會泄漏:
這是 SwiftUI 中的錯誤嗎? 有什么辦法可以擺脫這種行為嗎?
這是 SwiftUI 中的錯誤嗎?
不它不是。 List
緩存行用於重用和性能目的。
有什么辦法可以擺脫這種行為嗎?
是的,
a) 不要在成員中保留UIImage
b) 在其他地方管理UIImage
並在結構中將其保持為weak var image: UIImage?
c) 在行的.onDisappear
處理這個
d) 忽略這一點,因為 List 緩存的行數不會超過屏幕大小,因此當該行用於其他圖像時,它將被重置
我更喜歡 a) 和 d),具體取決於用例。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.