Я читал, что не нужно слабо фиксировать себя в обработчике завершения действия UIAlertController
, если ссылка UIAlertController
равна weak
. Причина в том, что UIAlertController
предназначен для освобождения всего, как только оно выполнится, при условии, что вы имеете слабую ссылку на него.
Источник здесь .
Вот гипотетический пример:
let alert = UIAlertController(title: "title", message: "message", preferredStyle: .alert)
// The action's completion handler captures the alert controller weakly, but self is not captured weakly
let action = UIAlertAction(title: "action title", style: .default, handler: { [weak alert] _ in
guard let alertController = alert else {
return
}
// The alert controller's action triggers a server call method owned by self
self.serverCall { result in
// We use the alertController inside the closure
print(alertController.actions)
DispatchQueue.main.async {
// Do stuff on the main thread with the result
}
}
})
alert.addAction(action)
Это правильный способ сохранить слабую ссылку на UIAlertController
?
Будет ли сохранение сильной ссылки на себя в этом случае вызывать цикл сохранения или нет?