С закрытием я обычно добавляю [слабое я] в свой список захвата, а затем выполняю нулевую проверку self:
func myInstanceMethod()
{
let myClosure =
{
[weak self] (result : Bool) in
if let this = self
{
this.anotherInstanceMethod()
}
}
functionExpectingClosure(myClosure)
}
Как выполнить нулевую проверку self, если я использую вложенную функцию вместо замыкания (или проверка даже необходима... или даже хорошая практика использовать вложенную функцию, подобную этой), т.е.
func myInstanceMethod()
{
func nestedFunction(result : Bool)
{
anotherInstanceMethod()
}
functionExpectingClosure(nestedFunction)
}