설정 :여러 NSManagedObjectContext 간의 무한 재귀 동기화 방지
두 개의 관리 컨텍스트 설정 (iPhone 응용 프로그램에서)이 있습니다. 대부분의 쿼리에 사용하는 주 컨텍스트와 내가 백그라운드에서 수행하려는 장기 실행 작업에 사용하는 백그라운드 컨텍스트
각 관리 대상 개체 컨텍스트에 대해 NSManagedObjectContextDidSaveNotification에 대한 알림을 설정했습니다. 알림에 대한 응답으로 mergeChangesFromContextDidSaveNotification을 호출하여 동기화합니다. 주 컨텍스트에서 상황이 바뀔 때마다 상황이 바뀌기 때문에 백그라운드 컨텍스트에서 일부 작업을 실행해야한다는 요구 사항이 있습니다.
컨텍스트 중 하나에 만 쓰는 것이 좋습니다. 이 경우 주 컨텍스트에 쓰십시오. 그러나 배경 컨텍스트에 쓸 경우 무한 루프가 발생합니다. 백그라운드 컨텍스트에 저장하면 기본 컨텍스트에 대한 알림이 트리거되고 변경 사항을 병합하고 백그라운드 컨텍스트에서 가져온 자체 알림을 실행합니다. 이것은 백그라운드 컨텍스트를 트리거하여 백그라운드 작업을 수행합니다. 백그라운드 작업을 수행하면 다시 작성을 시작합니다.
이 설정이 잘못되었거나 변경 알림에서 "배경 컨텍스트가 변경 될 때마다 백그라운드 작업 처리를 시작하는 방법"이 필요하거나 배경 컨텍스트를 읽어야합니다. -만.
아이디어가 있으십니까? 전형적인 "second-context-for-for-importing"시나리오와는 달리, 배경 컨텍스트와 관련하여 최신 컨텍스트를 유지해야하므로 내 배경에서 적절한 결과를 얻을 수 있어야합니다. 일.
특정 응용 프로그램에 대해서는 잘 모르겠지만 일반적으로 CS에서는 주기적 종속성을 감지/중단해야하는 경우 두 가지 상황이 모두 포함 된 범위에서 상태를 추가 할 수 있습니다. "마크 앤 스위프 (mark-and-sweep)"를 구현합니다. –