2013-07-15 2 views
2

내 프로젝트의 모든 네트워크 통신 및 다운로드를 처리하는 웹 API 클래스가 있습니다. 내 프로젝트에는 컬렉션 뷰와 테이블 뷰가 포함되어 있으며 다운로드가 완료 될 때마다 업데이트됩니다.WebAPI가 반환 될 때 적절한 업데이트 방법

내 방식 으로이 추한를 느낍니다.

내 컬렉션 뷰/테이블 뷰에 대한 참조를 WepAPI.m의 메소드로 전달합니다. 다운로드가 완료 될 때마다 참조를 사용하여 새 개체를 내보기에 삽입하고 새로 고침 메시지를 보냅니다.

이 방법이 있습니까? KVO 또는 다른 방법을 사용해야합니까?

내 웹 통신을 처리하기 위해 AFNetworking에게 프레임 워크를 사용하고

답변

2

블록을 사용합니다.

예 : 다운 로더가 메모리에 남아 있도록 (WebAPI.h에서)

typedef void (^SomeStuffBlock)(id someStuff); 
- (void)getSomeStuffWithCompletion: (SomeStuffBlock)completion; 

는 싱글 톤을 사용합니다.

소명이 같은 것}

+ (id)sharedInstance { 
static dispatch_once_t once; 
static id sharedInstance; 
dispatch_once(&once, ^{ 
    sharedInstance = [[self alloc] init]; 
}); 
return sharedInstance; 

을 (당신의 WebAPI.m이 넣어) :

[[WebAPI sharedInstance] getSomeStuffWithCompletion:^(id someStuff) { 
    //Make changes to your views here 
} 

을이 뷰는 해당 뷰 컨트롤러에서 수행되는 변경 한 것을 보장한다.

0

쉬운 패턴은 두 개의 싱글 사용하는 것 :

  • 인증, 시간 제한, 구문 분석을 처리하는은 ConnectionManager를,
  • DataManager - ConnectionManager에 엔드 포인트를 페치하고 파싱 된 결과를 저장하도록 요청합니다.

그런 다음 KVO (또는 NSNotifications)를 사용하여 DataManager 싱글 톤의 모든 업데이트를 수신 할 수 있습니다.

이러한 일을하는 방식은 간단하고 관련된 각 구성 요소에 상당한 재사용 성을 제공합니다.

관련 문제