2011-06-22 22 views
13

Ai đó có thể giải thích ngắn gọn cho tôi khi tôi cần sử dụng NSCache không? Tôi đọc tài liệu và tôi không hiểu. Giống như, hãy cho tôi một ví dụ về một kịch bản mà NSCache sẽ hữu ích? Cảm ơn.NSCache là gì?

+0

Tại sao bạn hỏi? Bạn muốn sử dụng nó để làm gì? Điều gì khiến bạn nhìn vào nó? Tóm lại, vấn đề bạn đang cố giải quyết là gì? –

+1

Đã duyệt qua danh sách các lớp học trong tài liệu và bắt gặp nó. Tìm thấy nó thú vị ... không có lý do cụ thể. – sumderungHAY

Trả lời

16

Đó là nhiều hay ít giống như một cuốn từ điển, với những điều bổ sung sau đây (như đã đề cập bởi các tài liệu):

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ếu bộ nhớ này 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 bộ nhớ của nó dấu chân.

Bạn có thể thêm, xóa và truy vấn các mục trong bộ nhớ cache từ các chủ đề 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 là .

Không giống như đối tượng NSMutableDictionary, bộ nhớ cache không sao chép khóa đối tượng được đưa vào đó.

Bạn có thể sử dụng nó nếu ứng dụng của bạn có nhiều dữ liệu cần phải làm việc, nhưng bạn không thể giữ tất cả dữ liệu trong bộ nhớ. Ví dụ, nếu bạn có một ứng dụng đã lấy dữ liệu từ một cơ sở dữ liệu SQL Lite hoặc một dịch vụ web, bạn có thể lưu trữ nó trong một NSCache sau khi tìm kiếm nó. Sau đó, khi bạn cần nó một lần nữa, bạn có thể kiểm tra bộ nhớ cache đầu tiên và chỉ cần nhấn cơ sở dữ liệu nếu nó không có trong bộ nhớ cache. Ưu điểm chính trong kịch bản này khi sử dụng từ điển thông thường là nếu bạn đặt quá nhiều thứ vào bộ nhớ cache và nó bắt đầu lấp đầy bộ nhớ, nó sẽ tự động loại bỏ mọi thứ để giải phóng bộ nhớ cho bạn.

+0

Cảm ơn người đàn ông, giờ đã rõ ràng. – sumderungHAY

+0

Điều thú vị là nó không sao chép khóa, tôi cho rằng điều đó có nghĩa là chìa khóa có thể thay đổi sau khi nó được thiết lập, có một hàm ý lạ, so sánh các địa chỉ hoặc băm chính. Có lẽ băm vẫn còn. Tôi phải suy nghĩ về nơi tôi có thể sử dụng điều này. Khác với việc sử dụng các khóa không tuân thủ NSCopying. –

+1

Điều thú vị là tôi đã sử dụng để lấy 27k mục từ cơ sở dữ liệu địa phương sql của tôi và sử dụng NSCache bây giờ phải mất ít hơn một giây thay vì đầy 5 giây. Cảm ơn người đàn ông – Eugene