gpt4 book ai didi

ios - 如何防止关闭swift3泄漏

转载 作者:塔克拉玛干 更新时间:2023-11-02 10:21:09 25 4
gpt4 key购买 nike

我已经成功地在类里面实现了一个闭包来从我的电话簿中获取过滤后的联系人,但是当我调用这个闭包时它会造成泄漏,我在 Xcode 工具中测试了它。

查看我的实现,

class CR: NSObject {

func GetAllSBUser(handler:@escaping (Array<SBUserModel>?, Error?) -> ()) {
CRBlock = handler

if self.AllUSersModels.count>0 {
self.CRBlock(self.AllUSersModels, nil)
} else {
self.CRBlock(nil, err)
}}}

我在另一个类中使用了这个方法,看我的实现。

I also have a global instance in my app delegate like this

let app = UIApplication.shared.delegate as! AppDelegate

class friendsVC: UIViewController, UITextFieldDelegate {

override func viewDidLoad() {
super.viewDidLoad()

self.app.cri?.AllSBFriends(handler: { (SBfriendsUIDs, error) in

if error == nil{

// Do something with list

} else{ self.friendsCountLbl.text = "Friends \(0)" }
})
}
}

在类 friendsVC 中,此方法会产生泄漏。我怎样才能删除它?我应该使用 [unowned self] 还是 weak? [unowned self] 或 weak 可能会在某些特殊的保留周期情况下造成崩溃。请建议我,如何解决它。

最佳答案

您需要对将使用 self 的闭包使用 weak 修饰符

self.app.cri?.AllSBFriends(handler: { [weak self] (SBfriendsUIDs, error) in

if error == nil{

// Do something with list

} else{ self?.friendsCountLbl.text = "Friends \(0)" }
})

关于ios - 如何防止关闭swift3泄漏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50270037/

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