Bối cảnh:Phát triển iPhone - Mô phỏng Cảnh báo bộ nhớ
Tôi có ứng dụng thanh tab. Mỗi tab chứa trình điều khiển điều hướng cho phép người dùng chuyển từ chế độ xem này sang chế độ xem khác hiển thị thông tin chi tiết về dữ liệu (mỗi chế độ xem đang được xử lý bởi bộ điều khiển chế độ xem và mỗi loại bộ điều khiển chế độ xem có phương thức didReceiveMemoryWarning
). Danh sách được điền bằng cách kéo dữ liệu từ các dịch vụ web.
Vấn đề:
Khi tôi sử dụng "Phần cứng> Mô phỏng Memory Cảnh báo" tùy chọn của iPhone Simulator, phương pháp didReceiveMemoryWarning
được gọi cho tất cả các bộ điều khiển quan điểm của tôi - ngay cả những ai mà người dùng đang xem. Tôi không muốn xóa bất kỳ nội dung nào đang được sử dụng bởi bộ điều khiển chế độ xem đang kích hoạt. Làm thế nào tôi có thể đạt được điều đó?
Phương pháp nào cần phải triển khai để tải lại dữ liệu sau khi dữ liệu được phát hành do cảnh báo bộ nhớ? (Tôi thấy rằng các lớp học xem điều khiển có chứa một cuộc gọi xem bảng viewDidLoad
phương pháp khi người dùng quay trở lại với quan điểm đó, nhưng nếu xem có chứa (nói UIWebView) sau đó viewDidLoad
phương pháp không được gọi. Tại sao vậy?)
thay đổi nội dung (Thứ Sáu ngày 30 Tháng 1 năm 2009 - 03:10)
(Lưu ý:. tôi đang sử dụng xây dựng giao diện cho việc tạo quan điểm, và loadView
phương pháp là nhận xét ra)
vì vậy, khi một bộ điều khiển xem nhận thông báo cảnh báo bộ nhớ, đây là các bước được thực hiện:
phương pháp sau được gọi là:
- (void)didReceiveMemoryWarning { [super didReceiveMemoryWarning]; }
Theo kết quả của cuộc gọi đến
[super didReceiveMemoryWarning]
,[self setView:nil]
được tự động gọi?Nếu bất kỳ tài nguyên nào cần được xóa thì phương pháp
setView
phải được ghi đè để xóa tài nguyên cục bộ.[self setView:nil]
không được gọi nếu chế độ xem hiện đang hoạt động (Theo mặc định). Đúng? - Tôi thực sự tò mò về phương pháp nào đưa ra quyết định này và làm thế nào?
Bạn vui lòng xác nhận. Plus, tôi đã nhận được một lỗi theo cách tiếp cận này nhưng thêm myObject = nil
sau khi phát hành myObject
trong dealloc
phương pháp của lớp điều khiển cố định vấn đề. Cảm ơn.
Thậm chí nếu tôi không ghi đè phương pháp didReceiveMemoryWarning, quan điểm của tôi sẽ bị xóa. Tại sao vậy? – Mustafa
Không ghi đè có nghĩa là bạn nhận được hành vi mặc định do UIViewController triển khai, để xóa chế độ xem của bạn. Nếu ghi đè của bạn chỉ đơn giản gọi các siêu thực hiện, đó là giống như không có ghi đè ở tất cả. –