Скажем, у нас есть контроллеры представления A и B, оба в стеке UINavigationController.
Должен ли я установить делегат fetchResultController A равным nil, когда я go из A в B, и затем установить его обратно при возврате назад? Может быть, что-то вроде этого для ViewControllerA:
func viewWillDisappear() {
fetchResultsController.delegate = nil
}
func viewWillAppear() {
fetchResultsController.delegate = self
collectionView.reloadData()
}
Плюсы удаления делегата для остановки отслеживания:
- Производительность. Резервный
cellForItem(at indexPath: IndexPath)
или cellForRow(at indexPath: IndexPath)
вызываться не будет.
Минусы:
- Смещение прокрутки потеряно, потому что мы пропустим insert элементов / строк, поэтому отсутствуют функции по умолчанию для автоматической настройки прокрутки.
Я не нашел никаких замечаний о том, какой подход считается по умолчанию . Все будет полезно, спасибо!