gpt4 book ai didi

在闭包中调用函数时的快速强链接

转载 作者:行者123 更新时间:2023-11-28 15:07:57 24 4
gpt4 key购买 nike

我对这段代码有疑问:

func sendDataToBackend()  {

Alamofire.request(MoneyCupUsersBackEndRouter.sendBI(BudgetInsightConnectionData(budgetInsightResponse: (self.BudgetInsightJSON)!, budgetInsightPermanentToken: (self.permanentToken)!, srcDate: userData!.lastUpdatedAt))).validate().responseString
{ [weak self] response in

switch response.result{
case .success( _):
DispatchQueue.main.async {
SVProgressHUD.dismiss()
_ = self?.navigationController?.popToRootViewController(animated: true)

}

case .failure(let error):
self?.showError(title: "ERROR SENT DATA BACKEND", message: "Erreur lors de l'envoi des données au Backend", error: error)

}
}


}

func showError(title: String, message: String, error: Error) {
print(title)
print(error)
DispatchQueue.main.async {
SVProgressHUD.dismiss()
let alert = UIAlertController(title: "erreur", message: message, preferredStyle:.actionSheet)
alert.addAction(UIAlertAction(title: "OK", style: .default)
{ Void in
_ = self.navigationController?.popToRootViewController(animated: true)}
)
self.present(alert, animated: true, completion: nil)
}


}

函数 showError 在闭包中被调用。但是该函数还处理 self 对象。由于 showError 是在闭包中调用的,我是否通过调用创建了对 self 的强引用?如果是这样,我能解决这个问题吗?

最佳答案

您的代码没有问题,因为 showError 被弱捕获并且 DispatchQueue.main.async 闭包不会导致保留周期。

关于在闭包中调用函数时的快速强链接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48184081/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com