gpt4 book ai didi

ios - 如果我使用单例网络服务发出网络请求,是否需要使用 [weak self]?

转载 作者:搜寻专家 更新时间:2023-10-31 22:54:41 24 4
gpt4 key购买 nike

假设我有一个使用 Alamofire 的 SessionManager 的网络单例,如下所示:

导入 Alamofire

class Network {
static let shared = Network()
private init() {}

private var sessionManager: SessionManager = {
let configuration = URLSessionConfiguration.default
configuration.httpAdditionalHeaders = SessionManager.defaultHTTPHeaders

return SessionManager(configuration: configuration)
}

func postRequest(params: [String: Any]? = nil, completion: (() -> ())? = nil) {
sessionManager.request(url, method: .post, parameters: params).validate().responseData {
// do something with response
completion()
}
 }
}

然后我在服务类中使用它:

class SomeService {
static let shared = SomeService()
private init() {}

func doSomePostRequest(params: [String: Any]? = nil, completion: (() -> ())? = nil) {
Network.shared.postRequest(params: params, completion: completion)
}
}

然后我发出请求并使用此服务类重新加载 TableView :

class MyViewController: UITableViewController {
@IBAction func fetchData(_: Any) {
SomeService.shared.doSomePostRequest {
// do i need to use [weak self] here?
self.tableView.reloadData()
}
}
}

我还需要使用 [weak self] 来避免崩溃和强引用循环吗?在任何时候,用户都可以通过按返回来关闭 MyViewController。

我假设我不需要它是否正确,因为服务类是单例?如果我将它作为 MyViewController 中的一个实例,我将不得不使用 [weak self]?

最佳答案

您使用对对象的弱引用来确保它们在应该释放的时候被释放。

单例永远不会被释放。因此,无论您拥有强指针、弱指针还是不安全指针都无关紧要。无需使引用变弱。

关于ios - 如果我使用单例网络服务发出网络请求,是否需要使用 [weak self]?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51122057/

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