2013-07-10 41 views
5

Có ai trùng hợp ngẫu nhiên biết cách tôi có thể làm trống bộ nhớ cache của ứng dụng iOS mà tôi đang phát triển không, tại thời điểm nó chuyển sang nền (applicationDidEnterBackground)? Tôi đã điều tra về NSCache nhưng tôi vẫn không thể hiểu làm thế nào tôi có thể lấy bộ nhớ cache để cơ bản loại bỏ/miễn phí nó?Làm trống bộ nhớ cache lập trình trong iOS

+0

'[myCache removeAllObjects];' nên thực hiện thủ thuật. –

+0

Cảm ơn câu trả lời của bạn. Làm thế nào tôi có thể khai báo/lấy giá trị cho "myCache"? Cảm ơn bạn lần nữa –

+0

Bạn có thể - ví dụ - khai báo nó như bất kỳ thuộc tính nào khác: '@property (strong) NSCache * myCache' và sử dụng gần giống với' NSMutableDictionary'. Một số ví dụ ở đây: http://stackoverflow.com/questions/5755902/how-to-use-nscache –

Trả lời

4

Đây có phải là những gì bạn đang nói đến không?

[[NSURLCache sharedURLCache] removeAllCachedResponses]; 

Bạn cũng có thể sửa đổi hành vi bộ nhớ cache của các yêu cầu để có bộ nhớ cache có chọn lọc phản hồi. Nếu bạn đang sử dụng AFNetworking tình cờ, bạn có thể sử dụng setCacheResponseBlock. Ví dụ. trong một dự án tôi đặt nó để trả lại nil cho tất cả các tệp video và âm thanh lớn. Nhưng cho phép nó lưu trữ các tệp hình ảnh nhỏ hơn.

[streamingOperation setCacheResponseBlock:^NSCachedURLResponse *(NSURLConnection *connection, NSCachedURLResponse *cachedResponse) { 
    return nil; // Ensures we are not unecessarily caching asset data to Cache.db 
}]; 
+0

Xin chào Alfie! Không chắc chắn nếu điều này sẽ làm việc với tôi. Điều duy nhất mà tôi cần là làm sạch bộ nhớ cache khi người dùng trong/iPad của mình gửi ứng dụng đến nền. Ví dụ, tôi nghĩ mật khẩu và dữ liệu nhất định luôn ở đâu đó trong bộ nhớ (khác với trình bao bọc móc khóa) vì lý do bảo mật, những dữ liệu này trong bộ nhớ phải được loại bỏ. Những gì tôi chưa biết là làm thế nào để chỉ ra chương trình của tôi bằng mã mà tôi cần phải lấy tất cả dữ liệu trong bộ nhớ cache và giải phóng nó. Tôi có giải thích cho bản thân mình không? Cảm ơn rất nhiều vì sự quan tâm của bạn. –

+0

Có thông tin bổ sung này giúp tôi hiểu câu hỏi của bạn tốt hơn. Bạn có thể cho tôi một vài ví dụ về dữ liệu mà bạn muốn "xóa khỏi bộ nhớ cache trong bộ nhớ" bất kỳ cũng tại sao bạn cảm thấy cần phải xóa nó? –

+0

Nếu bạn đặc biệt quan tâm đến bảo mật mật khẩu trong khi bộ nhớ, tôi gần như tích cực là không có cách nào để mọi người truy cập dữ liệu này từ bộ nhớ (nghĩa là không cần xóa nó/không phải lo ngại). Nếu bạn đã lưu trữ nó trong NSUserDefaults thì nó sẽ là một mối quan tâm. Ngoài ra, tùy thuộc vào nơi bạn tham chiếu đến mật khẩu tồn tại, bạn chỉ có thể đặt thuộc tính đó thành 0 khi nền. –

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