Đây là kịch bản:Đối phó với các yêu cầu web mở async khi UIViewController được popped (AFNetworking)
-A UIViewController (A) được đẩy vào stack navigation
-Ngày viewDidLoad một GET async được gọi là sử dụng AFNetworking (một singleton AFHTTPClient được chia sẻ trong toàn bộ ứng dụng) để điền vào các phần tử người dùng khác nhau trên màn hình (nói một UILabel).
sử dụng -Các nhấn nút quay lại trước khi yêu cầu trả
-Assume điều khiển xem hoạt động khác có thể làm cho các yêu cầu, do đó bạn không thể hủy toàn bộ hoạt động mở
Vì vậy, câu hỏi # 1 là, bạn nên theo dõi các yêu cầu mở được thực hiện bởi UIViewController A và hủy bỏ những điểm nổi bật khi người dùng rời khỏi chế độ xem đó hoặc bạn có nên để họ kết thúc và bỏ qua chúng không? Vì AFNetworking sử dụng các khối, các phần tử người dùng đang được cập nhật được giữ lại bên trong khối và do đó sẽ không gây ra sự cố khi khối thành công/thất bại được thực thi sau khi khung nhìn đã được bật. Tuy nhiên, nhược điểm để bỏ qua chúng dường như là lưu lượng mạng không cần thiết.
Câu hỏi # 2 là, bạn sẽ thực thi mã để hủy các hoạt động do UIViewController A thực hiện ở đâu? viewDidDisappear dường như không đúng vì người dùng có thể đã chuyển tiếp (đẩy một khung nhìn mới vào ngăn xếp) thay vì quay lại (xuất hiện chế độ xem hiện tại), trong trường hợp đó bạn không muốn hủy yêu cầu mở vì người dùng có thể đến quay lại chế độ xem hiện tại và nó sẽ không tải lại. Tuy nhiên, tôi không nghĩ dealloc hoặc viewDidUnload sẽ được gọi trong khi yêu cầu đang thực thi vì khối sẽ giữ lại trên các phần tử người dùng vì vậy tôi không nghĩ rằng nó có thể đến đó.
Sẽ đánh giá cao suy nghĩ về điều này. Bạn nghĩ gì là thực hành tốt nhất?
Lưu ý phụ: viewDidUnload không liên quan gì đến số lượng bộ nhớ giữ lại của bộ điều khiển chế độ xem. Nó được gọi khi bộ điều khiển xem muốn loại bỏ chế độ xem của nó (và có thể tải lại sau). Điều này xảy ra với bất kỳ bộ điều khiển chế độ xem màn hình ngoài nào trong một tab hoặc bộ điều khiển điều hướng khi bạn nhận được cảnh báo bộ nhớ, ví dụ. Vì vậy, nó có thể được gọi trong khi yêu cầu của bạn đang được tiến hành. – rickster