NSOperation
에 적합하지 않은 코드 종류는 확실하지 않지만 NSOperation
을 사용하려는 귀하의 과도한 행위가 자신의 NSOperation
하위 클래스를 작성하지 않으려는 의도에서 비롯된 것인지 궁금합니다. 다행스럽게도 작업 대기열 사용은 그보다 훨씬 간단합니다. NSBlockOperation
또는 NSInvocationOperation
을 사용하여 작업을 신속하게 생성 할 수 있습니다.
내가 일반적으로 사용하는 것 NSBlockOperation
:
NSOperation *completionOperation = [NSBlockOperation blockOperationWithBlock:^{
// do my image processing
[self applyMaskToImage];
}];
또는 당신은이 NSInvocationOperation
사용할 수 있습니다
NSOperation *completionOperation = [[NSInvocationOperation alloc] initWithTarget:self
selector:@selector(applyMaskToImage)
object:nil];
당신은 다음의 (a) 당신이 다운로드 작업의 각 addDependency
를 호출 할 수 있도록 completionOperation
둘 다에 따라 달라집니다. (b) 고객님의 대기열에 completionOperation
을 추가하십시오.
출처
2013-06-02 06:16:09
Rob
코드가 NSOperation에 적합하지 않은 이유는 무엇입니까? 또한, 당신은 불필요하게 것들을 복잡하게하지 않습니까? 플래그 두 개만 있으면 충분할거야, 안 그래? – Mar0ux
왜 이것이 'NSOperation'에 적합하지 않습니까? 간단한 NSOperation * completionOperation = [NSBlockOperation operationWithBlock :^{...}];을 수행 한 다음 해당 작업에 종속성을 추가합니다. 이것은 정확하게'NSOperation' (당신은 분명히 메인 큐에서 복잡한 이미지 처리를하고 싶지 않습니다)에 적합한 것과 같습니다. – Rob
@Rob NSBlockOperation은 훌륭하게 보이지만 존재하지는 않습니다. 덕분에 – jfisk