많은 시간과 리소스가 필요한 이미지 처리가 있으므로 콜백에 NSOperation
+ NSOperatioQueue
+ 대리자를 사용합니다. 그리고 모든 일.완료 블록이있는 NSOperation
이제 블록을 사용하고 싶습니다. 예를 들어 tableView에서 사용하기에 훨씬 우아하고 단순하기 때문입니다.
내가 뭘해야 단지 예를 들어 AFJSONRequestOperation
같다 : 내가 어떤 operationQueue 표시되지 않는이 예에서는
NSURL *url = [NSURL URLWithString:@"url"];
NSURLRequest *request = [NSURLRequest requestWithURL:url];
AFJSONRequestOperation *operation = [AFJSONRequestOperation JSONRequestOperationWithRequest:request success:^(NSURLRequest *request, NSHTTPURLResponse *response, id JSON) {
NSLog(@"App.net Global Stream: %@", JSON);
} failure:nil];
[operation start];
! 내가 어떻게 할 수 있니?
[ImageManagerOperation modifyImage:(UIImage*)image completitionBlock:(void (^)(UIImage *modifiedImage))complete];
여기서 ImageManagerOperation은 NSOperation입니다.
완료 블록을 설정할 수 있다는 것을 알고 있지만 큐에 작업을 추가해야합니다.
내 코드의 행 번호를 최소화하고 싶습니다 (가능한 경우 :).).
감사합니다. 그래서 결국 내 자신의 대기열을 만들어야합니다. 이건 tableView에 대한 것이기 때문에 많은 노력이 필요할 것입니다. GCD와 그 작업을 잘 처리하고 있습니다. 정말 감사합니다. –
감사합니다. 결국 나는 내 자신의 대기열을 만들어야하는데, tableView에 많은 것을 기울일 것이기 때문에 GCD와 그 작업을 잘 수행 할 것입니다. GCD는 작업을 올바르게 사용한다고 생각하십니까? 당신은 내 질문에 답해 주셔서 감사합니다. –
아니요, NSOperation은 GCD를 다른 방법으로 사용하지 않습니다. 대기열이 필요한 것처럼 들리므로 테이블보기에서 수행하는 작업량을 제한 할 수 있습니다. 당신이 스크롤하는 동안 각 셀에 대한 작업을하고 있다고 가정합니다. 어떤 사람이 많이 스크롤하면 너무 많은 일을 시작할 수 있습니다. 대기열을 사용하면이를 제한하는 데 도움이되며 셀에서 시작되었을 수 있지만 더 이상 필요하지 않은 작업은 사용자가 스크롤하여 취소 할 수 있습니다. 이것을 깊이 논의하는 WWDC (2012 생각) 세션이 있습니다. 이것이 당신이하는 일이라면이 비디오를 찾아야합니다. –