2010-02-12 35 views
10

Sự cố: Tôi đang thực hiện nhập khẩu thực sự lớn nơi tôi phân tích cú pháp tệp XML. Đối với mỗi 10 đối tượng được quản lý phân tích cú pháp, tôi muốn lưu bối cảnh đối tượng được quản lý và loại bỏ 10 đối tượng đó trong bộ nhớ, do đó tôi không bao giờ có hơn 10 đối tượng trong bộ nhớ tại một thời điểm.Tôi có thể xóa bối cảnh đối tượng được quản lý không?

Sau khi lưu, làm thế nào tôi có thể xóa ngữ cảnh để tất cả các đối tượng biến mất khỏi bộ nhớ?

Trả lời

25

Trong một tình huống như thế này có bốn điều cần nhớ để làm:

  1. Quấn vòng lặp của bạn trong một NSAutoreleasePool
  2. kỳ tiết kiệm bối cảnh; sau đó
  3. Đặt lại bối cảnh với -reset
  4. phát hành và tái tạo các hồ bơi autorelease

này sẽ tuôn tất cả các bộ nhớ đang được sử dụng và rõ ràng bối cảnh.

+1

Hey Marcus !! Anh không phải là người đã viết cuốn sách Core Data lớn đó sao? Cảm ơn câu trả lời. Khá chắc chắn đó là một trong những tốt nhất;) – dontWatchMyProfile

+3

Có, tôi đã viết cuốn sách :) –

+0

Tôi nghĩ rằng chúng tôi đã gặp phải một số vấn đề các hướng dẫn này không làm việc cho. Tôi rất muốn tìm ra sự khác biệt. SO Người dùng http://stackoverflow.com/users/1949877/scott-carter có bài đăng trên blog http://finalize.com/2013/01/04/core-data-issues-with-memory-allocation/. Các vấn đề của chúng tôi giống hệt với phần 'NSTemporaryObjectID_default'. Ngoài ra cf. http://stackoverflow.com/questions/9575994. –

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