코어 데이터를 기반으로하는 응용 프로그램을 만들고 있습니다. 지금은 컨텍스트에서 엔터티를 추가하거나 삭제할 때 개체 컨텍스트를 저장하고 있습니다. 성능에 영향을 미칠지 모르니 저장을 지연시킬 생각입니다. 사실 응용 프로그램이 종료 될 때까지 모든 작업을 지연시킬 수 있습니다. 응용 프로그램을 닫을 때만 데이터를 저장하는 것이 너무 위험합니까? 얼마나 자주 개체 컨텍스트에서 저장을 호출해야합니까?얼마나 자주 코어 데이터에 저장해야합니까?
나는 별도의 스레드가 저장을 처리하도록 생각하고 있었다 : 그것은 세마포어를 기다릴 것이다. 응용 프로그램의 어느 부분이 코어 데이터를 저장하기 위해 helper/util 메소드를 호출 할 때마다, 그것은 세마포어를 감소시킬 것입니다. 0이되면 "save thread"는 한 번 저장을 수행하고 세마포어를 5로 증가시킨 다음 다시 잠자 게됩니다.
좋은 추천이 있습니까? 감사합니다.
빠른 답변 주셔서 감사합니다. 내 물건은 거대하지 않지만 대상은 약간 복잡합니다. 기본 저장소는 SQLite이므로 여러분이 말했듯이 꽤 괜찮습니다. 최근에 발생하는 추가 문제가 있습니다. 컨텍스트에서 엔티티 개체를 만들어 저장합니다. 짧은 순간에, (FetchedResultsController를 사용하여 나중에 검색 한) 엔티티를 삭제하면 Internal Consistency와 관련이있는 오류가 발생합니다. 컨텍스트가 메모리에있는 객체 그래프를 업데이트하지 않았기 때문이라고 생각합니다. – Justin
실제 저장 빈도를 변수 또는'#define'으로 만들고 싶다면 일단 테스트를하면 저장 빈도를 미세 조정하고 Instruments에서 결과를 볼 수 있습니다. –