Skip to content

Instantly share code, notes, and snippets.

@zxhfirefox
Last active January 24, 2019 10:27
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save zxhfirefox/db603a097fb3871689b7166cb4de5b82 to your computer and use it in GitHub Desktop.
Save zxhfirefox/db603a097fb3871689b7166cb4de5b82 to your computer and use it in GitHub Desktop.
Block in Block
class Test {
let networkClient: NetworkClient
let jsonSerilizer: JSONSerilizer
let logger: Logger
func run(completion: @escaping (Result) -> Void) {
let url: URL = URL(...)
logger.log("send request to \(url)"
networkClient.request(url) { [weak self] response, error in
guard let self = self else { return }
self.logger.log("processing response of \(url)"
self.jsonSerilizer.process(response) { [weak self] result in
guard let self = self else { return }
self.logger.log("processing response of \(url) finished")
completion(result)
}
}
}
}
@zxhfirefox
Copy link
Author

On line 12, we should use [weak self] to avoid retain cycle, or we don't need?

@zxhfirefox
Copy link
Author

On line 10, if we write guard let strongSelf = self, then on line 12, should we use [weak strongSelf] or [weak self]?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment