개요 완료 핸들러아이폰 OS - 코어 데이터 -
- 나는이
- 핵심 데이터 뷰 컨트롤러에 의해뿐만 아니라 통지
에 사용되는 핵심 데이터를 사용하는 아이폰 OS 프로젝트 구현
DatabaseEngine
을 인스턴스화DatabaseEngine
AppDelegate에didFinishLaunchingWithOptions
에서DatabaseEngine
라는 데이터베이스 활동을위한 싱글 톤 클래스는 뷰 컨트롤러 내가 설정하고 통지 뷰 컨트롤러의viewDidLoad
에서- 의 속성 (위임)를 포함 Zoom_out 개월
DatabaseEngine
보기 컨트롤러 인스턴스에 대한 위임 - 데이터베이스가 열리면 완료 핸들러에서 대리자 속성을 통해보기 컨트롤러 및 알림을 설정하는 메서드를 호출합니다.
우려 (타이밍 문제)
- 내가의 시나리오
DatabaseEngine
먼저 생성되고 그 순간에 뷰 컨트롤러의viewDidLoad
이 실행되지 않을 것이다 (타이밍 문제가)있을 수 있습니다 걱정하고, 그러므로DatabaseEngine
위임 따라서 데이터베이스가 completionHandler을 실행하는 것입니다하지만 대리인이 전무하기 때문에, 어떤 작업이 수행되지 것입니다, 초기화하지 않을
나는 공동을 해결하기 위해 무슨 짓 뷰 컨트롤러의 viewDidLoad에 내부
- ncern, 나는 데이터베이스가있는 경우 확인하고 오전 뷰 컨트롤러가로드되지 않은 경우, 그래 그럼 내가 다시 (뷰 컨트롤러의보기를 설정) 작업을 실행합니다.
참고 나는 스레드를 명시 적으로 사용하지 않고 있지만 completionHandler는 비동기 적으로 실행됩니다.
질문
- 나는 여러 번 시도하고 뷰 컨트롤러의 데이터가 제대로로드에는 타이밍 문제가없는 것으로 보인다. 나는 (지연을 만들기 위해) 큰 값으로 루핑을 시도했지만 여전히 타이밍 문제는 없다. 왜 그런지 궁금해?
- 구현이 좋은 디자인인가요 아니면 더 좋은 방법이 있습니까?
- 내 관심사를 해결하기위한 올바른 방법입니까?
정말 고마워요 !! managedObjectContext 접근 자 내부에서 게으른 인스턴스화를 수행하는 것이 좋습니다. 답장을 보내 주셔서 감사합니다. – user1046037