繁体   English   中英

@Binding 在 swiftUI 中导致 memory 问题?

[英]@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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM