小编kon*_*nya的帖子

避免在 DispatchQueue 中使用 self

我想知道如何消除self. DispatchQueue作为一个好的实践,我们应该self只在init()

func loadAllClasses() {
    DispatchQueue.global(qos: .background).async {
      self.classVM.fetchAllClasses(id: id, completion: { (classes, error) in
        DispatchQueue.main.async {
          if error != nil {
            self.showAlert(message: "try again", title: "Error")
          }
          if let classes = classes {
            self.classesList = classes
            self.classesCollectionView.reloadData()
          }
        }
      })
    }
  }
Run Code Online (Sandbox Code Playgroud)

swift dispatch-queue

3
推荐指数
2
解决办法
5787
查看次数

有或没有[弱自我]

我的情况很奇怪。我的服务器当前已关闭并收到 503 http 状态代码。根据给定的代码如下,代码进入 if 条件,但是当我将调试点置于let error = self?.decodeErrorMessage(data: data, statusCode: response.statusCode). 然后它从 if 条件跳转并执行 else if 条件。

ClientViewModel.swift

let networkRequest = CustomNetworkRequest(headers: headers, httpMethod: .get, httpBody: nil, parameters: nil, url: url)

let customNetworker = CustomNetworker(urlSession: URLSession(configuration: config))
  customNetworker.dataRequest(networkRequest, successHandler: {[weak self] data in
    self?.parseData(data)
    completion(nil)
  }, failureHandler: { [weak self] error in
    completion(error)
})
Run Code Online (Sandbox Code Playgroud)

CustomNetworker.swift

final class CustomNetworker {
  private let urlSession: URLSession

  public init(urlSession: URLSession) {
    self.urlSession = urlSession
  }
  func dataRequest(input parameters here) {
    let …
Run Code Online (Sandbox Code Playgroud)

swift

2
推荐指数
1
解决办法
824
查看次数

标签 统计

swift ×2

dispatch-queue ×1