0

데이터 저장소에 액세스하고 코어 데이터 엔터티를 나타내는 개체를 반환하는 싱글 톤 클래스를 만들었습니다. 이것은 정상적인 스레드에서 괜찮지 만 배경 스레드가 관리 객체 컨텍스트의 자체 복사본으로 실행될 때 백그라운드 스레드에서 실행중인 다른 클래스에서이 싱글 톤 메서드에 액세스하는 것에 대해 우려하고 있습니다.싱글 톤 데이터 저장소 배경 스레드

백그라운드 스레드에서 싱글 톤을 호출 할 때 싱글 톤의 새로운 인스턴스를 만들고 관리되는 객체 컨텍스트의 백그라운드 스레드 복사본을 전달해야합니다. 그렇지 않으면 싱글 톤 메서드에 안전하게 액세스하여 사용할 수있게해야합니까? 애플 리케이션 대리인에서 내부적으로 검색하는 공유 관리 객체 컨텍스트?

+0

"싱글 톤의 신선한 인스턴스"어떻게해야합니까? – Abizern

+0

init 이벤트를 통해 싱글 톤을 인스턴스화하면 싱글 톤이 아닌 복사본이 생깁니다 –

+0

그러면 싱글 톤을 갖는 것이 무엇입니까? 원할 때 언제든지 자신의 것을 만들려고한다면 - 처음에는 싱글 톤을 갖는 것이 무엇입니까? – Abizern

답변

2

는 데이터 관리자 클래스를 만들게 모든 관련 핵심 데이터 통화를 performBlock: 또는 performBlock:andWait:

호출은 항상 스레드 안전한 방식으로 이루어집니다 그런 식으로.

개인적으로 나는 주로 데이터 관리자를 작성하여 주 스레드에서 호출되도록하고 스레드가 의미가 있든간에 더 이상의 호출을 처리하도록합니다.

+0

기본 스레드에서 수행하는 경우 당신은 UI를 차단합니까? –

+0

데이터 관리자가 백그라운드 스레드에서 실제 호출을 수행하지 않을 경우. 내 요점은 데이터 관리자 개체가 있다는 것입니다. 가장 효율적인 것처럼 전경 스레드에서 백그라운드에서 작업을 수행하는 것은 해당 객체에 달려 있어야합니다. – Abizern

+0

나는 정직 할 것이다. 나는 결코 그 접근법을 고려하지 않았다. 현재보기 컨트롤러에서 백그라운드 스레드를 시작하고 그에서 데이터 관리자를 호출하십시오. 나는 당신의 충고에 감사 드리며,이 아이디어를 소화하고 그것을 평가하기 위해 잠시 시간이 걸릴 것입니다. 그래서 나는 당신의 대답을 정확한 답으로 표시하고 멀리하고 생각해 볼 것입니다. 고맙습니다 . –