簡體   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