저는 작업, 별도의 대기열 관리, 스레드 안전 + 잠금 작업에 대한 내재 된 (아마도 간접적 인) 액세스와 별도로 (예 : VideosManager
) 별도의 관리자 (선호하는 공유 관리자)를 선호하는 편이 낫습니다. 컨트롤러 계층 구조에 따라 다른 솔루션 대신 사용할 수 있습니다.
당신은보기 컨트롤러 모델로 접근 할 수 있지만 대부분의 경우에는 좋지 않습니다.
설계하고 구현하는 빠른 샘플 API :
을
@interface VideoManager
+ (instancetype)sharedManager; // returning a shared singleton
- (void)startDownloadOfVideo:(Video *)video;
- (void)cancelDownloadOfVideo:(Video *)video;
- (void)cancelDownloadsExceptForVideo:(Video *)video;
- (BOOL)isDownloadInProgressForVideo:(Video *)video;
@end
필요한 큐를 처리하고에 다운로드 작업을 운영 할 구현 (주로 연결 인스턴스 (당신이 추가 정보로 구현 된 Video
인터페이스를 가지고 가정) 및 델리게이트 큐 계획), 들어오는 데이터를 처리하고, 파일 또는 출력 스트림에 적절하게 작성하여 필요에 따라 동적으로 흐름을 제어 할 수 있습니다. 이것은 당신이 반복하고 그것을 당신의 요구 사항에 맞출 수있는 빠른 순진 계획입니다.