2012-05-08 41 views
7

Vì vậy, đối tượng NSCache phải luôn hoạt động để giữ dữ liệu được lưu trong bộ nhớ cache, điều đó có nghĩa là cùng một đối tượng được sử dụng để lưu trữ dữ liệu, phải được sử dụng để truy xuất dữ liệu.Mục tiêu-c - lợi ích của việc sử dụng NSCache qua NSMutableDictionary tĩnh?

  • Vì vậy, câu hỏi là điểm của việc sử dụng NSCache trên NSDictionary đơn lẻ chứa dữ liệu của tôi là gì?
  • Cách ưa thích để sử dụng NSCache là gì? trường tĩnh? kế thừa nó và tạo ra một singleton?

Trả lời

19

Bộ nhớ cache có một số điều kỳ quặc khiến nó hoạt động tốt như bộ nhớ cache trong khi không phù hợp để sử dụng như một bộ sưu tập mục đích chung. Như đã đề cập trong các tài liệu:

đối tượng

NSCache khác với các bộ sưu tập có thể thay đổi khác trong một vài cách sau:

  • Lớp NSCache kết hợp các chính sách tự động loại bỏ khác nhau, trong đó đảm bảo rằng nó không sử dụng quá nhiều bộ nhớ của hệ thống. Hệ thống sẽ tự động thực hiện các chính sách này nếu bộ nhớ là cần thiết bởi các ứng dụng khác. Khi được gọi, các chính sách này sẽ xóa một số mục khỏi bộ nhớ cache, giảm thiểu dung lượng bộ nhớ của nó.
  • Bạn có thể thêm, xóa và truy vấn các mục trong bộ nhớ cache từ các luồng khác nhau mà không phải tự khóa bộ nhớ cache.
  • Truy xuất nội dung nào đó từ đối tượng NSCache trả về kết quả tự động phát hành.
  • Không giống như đối tượng NSMutableDictionary, bộ nhớ cache không sao chép các đối tượng chính được đưa vào đó.

Những tính năng cần thiết cho lớp NSCache, như bộ nhớ cache có thể quyết định để tự động biến đổi bản thân không đồng bộ đằng sau hậu trường nếu nó được gọi là để giải phóng bộ nhớ.

+0

Chỉ cần cẩn thận khi thử nghiệm .. xác nhận "AssertEqualObjects" sẽ không hoạt động trên hai trường hợp riêng biệt nhưng trống của NSCache –

Các vấn đề liên quan