2016-08-15 5 views
0

AWS S3의 비디오가있는 테이블을로드하려면 여러 개의 NSOperations를 실행해야하지만 (테이블의 행당 두 개의 연산), 테이블의 행이 선택되면 관련 작업을 전달하려고합니다. 테이블의 해당 열을 다음보기 컨트롤러로 보내 다운로드를 계속하고 다른 비디오를 다운로드하십시오. 그런 다음 테이블의 다른 행에서 다른 작업을 일시 중단하고 테이블보기 컨트롤러로 돌아갈 때 다시 시작합니다.NSOperationQueue UITableView 행당

UITableView의 각 행에 대해 NSOperationQueue를 사용하는 것이 안전합니까? 내가 원하는 것을 성취 할 수있는 더 좋은 방법이 있습니까?

답변

1

저는 작업, 별도의 대기열 관리, 스레드 안전 + 잠금 작업에 대한 내재 된 (아마도 간접적 인) 액세스와 별도로 (예 : 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 인터페이스를 가지고 가정) 및 델리게이트 큐 계획), 들어오는 데이터를 처리하고, 파일 또는 출력 스트림에 적절하게 작성하여 필요에 따라 동적으로 흐름을 제어 할 수 있습니다. 이것은 당신이 반복하고 그것을 당신의 요구 사항에 맞출 수있는 빠른 순진 계획입니다.