header.onSetupView = strongSelf.setUpHeader(view:section:)
Эта строка создает сильную ссылку на strongSelf
, которая является сильной ссылкой на self
, настолько транзитивно, что создает сильную ссылку на self
в закрытии onSetupView
.
Другими словами, то, что вы здесь написали, совпадает с:
header.onSetupView = { view, section in
strongSelf.setupHeader(view: view, section: section)
}
И поскольку strongSelf
является сильной ссылкой на self
, это то же самое, что и сильная ссылка на self
:
header.onSetupView = { view, section in
self.setupHeader(view: view, section: section)
}
И еще один способ сказать это: self
не может быть освобожден раньше, чем strongSelf
, потому что тогда strongSelf
будет недопустимой ссылкой.