Здесь сценарий:
-A UIViewController (A) помещается в стек навигации
-On viewDidLoad async GET вызывается с использованием AFNetworking (однопользовательский AFHTTPClient, общий для всего приложения) для заполнения различных пользовательских элементов в представлении (например, UILabel).
Пользователь нажимает кнопку "Назад" перед возвратом запроса.
-Использовать другие контроллеры активного представления могут делать запросы, чтобы вы не могли отменить все открытые операции.
Итак, вопрос № 1: отслеживать открытые запросы, сделанные UIViewController A, и отменять выдающиеся, когда пользователь покидает это представление, или вы должны позволить им закончить и проигнорировать их? Поскольку AFNetworking использует блоки, обновляемые пользовательские элементы сохраняются внутри блока и, следовательно, не будут вызывать сбои, когда блок успеха/отказа выполняется после того, как представление было вытолкнуто. Однако недостаток, чтобы игнорировать их, кажется, является ненужным сетевым трафиком.
Вопрос № 2: где бы вы выполнили код для отмены операций, выполненных UIViewController A? viewDidDisappear не кажется правильным, потому что пользователь может перейти вперед (перетащил новое представление в стек), а не обратно (вытолкнул текущее представление), и в этом случае вы не хотите отменять открытые запросы, потому что пользователь может прийти вернуться к текущему виду, и он не будет загружаться снова. Тем не менее, я не думаю, что dealloc или viewDidUnload будут вызваны во время выполнения запроса, так как блок сохранит удержание на пользовательских элементах, поэтому я не думаю, что он может туда попасть.
Почитал бы по этому поводу мысли. Как вы считаете лучшей практикой?