Theo Apple, họ đã cải thiện việc quản lý bộ nhớ trong cho các chế độ xem đủ để đạt được các lợi ích bằng cách phá hủy nội dung trong viewWill/DidUnload
là tối thiểu. Hơn nữa, họ có dữ liệu cho thấy rằng nhiều ứng dụng gặp sự cố do ứng dụng không xử lý đúng các thông báo đó và thực hiện các công cụ "khác" không liên quan đến việc tải chế độ xem.
Cuối cùng, cảnh báo bộ nhớ hiện đã được xác minh là cảnh báo đầu tiên và duy nhất bạn sẽ nhận được trước khi ứng dụng của bạn bị chấm dứt do bộ nhớ thấp, vì vậy nó thực sự là nơi xử lý các vấn đề về bộ nhớ.
Vì vậy, về cơ bản, chỉ cần xóa các phương thức viewWillUnload
và viewDidUnload
của bạn. Xử lý các sự cố bộ nhớ trong didReceiveMemoryWarning
và bất kỳ trình quản lý bộ điều khiển chế độ xem nào khác ở những vị trí thích hợp.
EDIT
Tôi có thể hỏi: những "nơi thích hợp" là gì? Tôi đã từng sử dụng ViewdidUnload trong một số trường hợp nhất định mà chế độ xem [Sẽ/Đã] Biến mất là không hoàn toàn đầy đủ. Giống như tiếp tục đi xuống trên ngăn xếp điều khiển ngăn xếp. Bạn có muốn xây dựng thêm về điều đó không? - Dan1one
Điều đó tùy thuộc. Tôi biết đó không phải là điều bạn muốn nghe, nhưng đó là sự thật :-)
Nói chung, bạn nên tránh sự bất đối xứng. Vì vậy, bạn nên "hoàn tác" một hoạt động bằng cách sử dụng phương pháp đối xứng mà từ đó bạn "đã làm" bản gốc. Nói chung, bạn có thể thực hiện tất cả các công việc loại viewDidUnload
trong didReceiveMemoryWarning
và dealloc
.
Điều này thực sự không gây ra thay đổi, bởi vì bạn phải sao chép hầu hết mã đó ở cả hai nơi đó.
Tôi không biết ý bạn là gì bằng cách "tiếp tục xuống trên ngăn xếp bộ điều khiển điều hướng", vì vậy bạn cần làm rõ ví dụ đó để tôi cung cấp phản hồi hữu ích.
Một trong những vấn đề khi sử dụng viewDidDisappear
và viewDidAppear
là rất khó để biết khi nào chế độ xem xuất hiện vì nó thực sự xuất hiện hoặc vì chế độ xem ở trên cùng đang biến mất ... .
Những mẩu API có nghĩa vụ phải giúp bạn giải quyết những vấn đề sau:
- (BOOL)isMovingFromParentViewController
- (BOOL)isMovingToParentViewController
- (BOOL)isBeingDismissed
- (BOOL)isBeingPresented
Thế nào là bạn hiện đang sử dụng viewDidUnload cho trong ứng dụng của bạn? –