[英]@Binding causing memory issue in swiftUI?
我正在使用我傳遞給 function 的 @@Binding 但它會導致 memory 泄漏和應用程序凍結。
import SwiftUI
struct BottomView: View {
var accessibilityID: String
var viewModel: ViewModel
@Binding var selectedPoductDetails: [String: SelectedProductDetail]
init(accessibiltyID: String, viewModel: ViewModel selectedPoductDetails: Binding<[String: SelectedProductDetail]>) {
self.viewModel = viewModel
self.accessibilityID = accessibiltyID
self._selectedPoductDetails = selectedPoductDetails
}
var body: some View {
VStack {
HStack {
let totalAmount = viewModel.totalAmount(selectedPoductDetails:
selectedPoductDetails)
Text(totalAmount)
}
}
}
我的function在另一個class是
func totalAmount(selectedPoductDetails: [String: SelectedProductDetail]) -> String {
self.selectedProductDetails = selectedPoductDetails
let amount = selectedPoductDetails.reduce(into: 0, { $0 += $1.value.amount })
return amount
}
為什么 memory 泄漏和應用凍結? 我是評論碼
let totalAmount = viewModel.totalAmount(selectedPoductDetails:
selectedPoductDetails)
一切正常。
我究竟做錯了什么?
你只是循環調用,因為分配屬性激活綁定,激活更新,調用可計算的主體,再次調用viewModel.totalAmount
...和 go ...
只是刪除
func totalAmount(selectedPoductDetails: [String: SelectedProductDetail]) -> String {
// self.selectedProductDetails = selectedPoductDetails // << this !!
let amount = selectedPoductDetails.reduce(into: 0, { $0 += $1.value.amount })
return amount
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.