2012-07-20 3 views
3

내 앱은 회사의 평가와 관련하여 다소 복잡한 계산을 수행합니다. 여러 소스 (예 : csv 데이터 및 기본 데이터로 XML 데이터로 저장된 웹 서비스의 주가)와 같은 원시 데이터를 가져옵니다.Objective-C의 조정자 패턴 : 계산을 수행하는 컨트롤러 개체 등

데이터를 가져온 후 앱은 데이터를 파싱하고 코어 데이터에 저장 한 다음 계산을 수행합니다. 계산 결과는 핵심 데이터에도 저장됩니다.

현재로서는 회사 (관리) 개체에 범주로 계산을 추가하고 csv 및 xml 데이터를 데이터 개체 (이미지에 표시되지 않음)에 추가 된 범주로 구문 분석하도록하는 방법을 사용합니다. 네트워크 관련 코드는 별도의 싱글 톤 객체에 있습니다 (iOS 프로그래밍 : The Big Nerd Ranch Guide, 제 3 판).

문제 :

네트워크 통신으로

및 계산 (일부 계산은 특정 데이터 패키지를받은 후에 만 ​​시작할 수 있습니다 예) 상호 의존하고, 내가 함께 결국 내가 멀티 스레딩을 사용하려면 보기 컨트롤러에서 꽤 많은 코드.

나는 중재자 패턴의 아이디어에 따라 코디네이터 객체를 사용해야하고 코디네이션 관련 코드에서 내 뷰 컨트롤러를 해제해야한다고 생각합니다.

이 점에 대해 어떻게 생각하십니까?

  • 조정자 패턴 (조정자 개체)이보기에 올바른 접근 방법 일까요?
  • 코디네이터 개체를 어떻게 설정 하시겠습니까?
  • 웹에서이 주제에 대한 유용한 자습서 나 샘플이 있습니까? 아니면 이 책에 있습니까?

고맙습니다!

답변

1

iOS는 NSOperations 및 Grand Central Dispatch와 같은 두 가지 훌륭한 기술을 제공합니다. 나는 당신이 묘사하고있는 것에 대해 오퍼레이션을 사용하는 것에 더 익숙하다. 오퍼레이션 사이에 연결을 생성하는 것이 매우 쉽기 때문에 다른 것이 끝날 때까지는 어떤 것이 시작되지 않는다. NSOperation 대기열은 OS와 함께 작동하여 장치 및 현재 자원에 대한 스레드 및 일반로드 수가 관리됩니다.

기본 클래스 (이 경우 귀하의 viewController지만 어떤 클래스도 될 수 있음)에서 인스턴스화하는 중재자 객체가있는 "NSOperation-WebFetches-MadeEasy"라는 오픈 소스 프로젝트가 있으며, 그것을 통해 모든 작업을 수행하고 mainThread에서 클래스의 한 메서드로 메시지를 보냅니다. 15 분 안에이 작업을 시작할 수 있습니다. 원하는 클래스는 OperationsRunner이며, .h 파일에 추가 할 작업을 알려줍니다. 웹 페치 (병행 NSOperations)와 비 동시 작업 모두에이 기능을 사용할 수 있습니다. 이제는 블록 작업을 수행 할 수도 있습니다.

는에 NSOperations 및 블록 읽기 최대 애플의

+0

Concurrent Programming Guide는 GCD 날을 상기시켜 주셔서 감사합니다. 나는 GCD를 사용하기 위해 내 애플 리케이션의 일부를 recoded하고 지금은 잘 작동하는 것 같습니다. 내가 언급 한 오픈 소스 프로젝트를 찾지 못했습니다. URL이 있습니까? – AlexR

+1

웃기는 - Google에서 찾지 못했습니다. - URL -> https://github.com/dhoerl/NSOperation-WebFetchches-MadeEasy –

관련 문제