self
- зарезервированное слово в Swift. Поскольку вы создаете новую локальную переменную с именем self, вам нужно пометить ее обратными галочками, как объяснено в ссылке от rmaddy.
Обратите внимание, что обычное соглашение для отображения слабого себя в сильную переменную заключается в использовании имени strongSelf
:
() -> Void = { [weak self] in
guard let strongSelf = self else {
//your code to call self.callMethod2() can't succeed inside the guard (since in that case weak self is nil)
//self.callMethod2()
return //You must have a statement like return, break, fatalEror, or continue that breaks the flow of control if the guard statement fails
}
strongSelf.callMethod3()
}