Tôi vẫn đang học cách phát triển iOS và làm việc với Dữ liệu cốt lõi và đã đi qua các chu kỳ lưu giữ. Đó là sự hiểu biết của tôi khi đọc Hướng dẫn lập trình dữ liệu cốt lõi sau khi bạn hoàn thành công việc với một mối quan hệ, bạn sử dụng phương thức bối cảnh đối tượng được quản lý refreshObject:mergeChanges
để đảm bảo rằng chu trình giữ lại bị hỏng. Vì vậy, cho phép nói rằng tôi có một mối quan hệ rất nhiều giữa Sở và Nhân viên của nó, và trong mã của tôi, tôi truy cập mối quan hệ nhân viên từ bộ phận, điều đó có nghĩa là bây giờ tôi sẽ phải lặp qua từng đối tượng nhân viên và gọi refreshObject:mergeChanges
phương pháp? Trong mã này sẽ làDữ liệu cốt lõi: tránh giữ lại chu kỳ trong các mối quan hệ với nhiều người
for (Employee *anEmployee in department.employees) {
//some code that accesses an employee's properties
[context refreshObject:enEmployee mergeChanges:NO];
}
Dường như nếu tôi không làm điều đó, mỗi đối tượng nhân viên tôi truy cập bây giờ sẽ có tham chiếu đến bộ phận và tôi sẽ kết thúc với chu kỳ lưu giữ.
Sự hiểu biết của tôi có chính xác ở đây không? Đây có phải là cách tiếp cận tiêu chuẩn khi giao dịch với nhiều mối quan hệ trong Dữ liệu cốt lõi không? Cảm ơn.
Vì vậy, điều này có nghĩa là mỗi khi tôi làm việc với các đối tượng trong mối quan hệ tôi sẽ cần phải gọi phương thức đó trên đối tượng? –
Không bắt buộc phải làm điều đó, mặc dù nó được khuyến khích cao trong trường hợp bạn có một cửa hàng lớn và thường xuyên truy cập 'NSManagedObjects' riêng biệt, và không cần phải giữ chúng trong bộ nhớ (Bạn có thể để chúng trở thành lỗi lầm)). Hãy tưởng tượng CoreData như là một "hệ thống thu gom rác", trên một môi trường thu gom rác bạn chỉ vứt bỏ bộ nhớ nếu bạn quan tâm đến việc sử dụng bộ nhớ. 'RefreshObject: mergeChanges' sẽ giải phóng đối tượng thay vì để nó vào hệ thống thu gom rác. Công cụ thu gom rác này chỉ là sự tương tự để bạn hiểu quy trình. – vfn