2011-03-17 5 views
4

표준 NSOperation 상황 인 백그라운드에서 실행해야하는 상당히 단순하지만 비용이 많이 드는 작업이 있습니다. 또한 작업이 취소를 지원하는지 확인하고 적절히 중지해야합니다. NSInvocationOperation에서 값 비싼 메서드 호출을 마무리하거나 처음부터 NSOperation 하위 클래스를 작성하는 것이 더 나은 접근 방법 인 요구 사항을 감안할 때?NSOperation 취소 : NSInvocationOperation 또는 NSOperation 하위 클래스?

여기까지 내 생각입니다. NSInvocationOperations는 나의 첫 번째 선택이며 과거에 사용한 적이 있습니다. 작업이 매우 간단해서 모든 NSOperation 상용구 코드를 실행하여 전체 클래스를 작성하지 않으려 고합니다. 지금 내가 망설이는 것은 실제로 NSInvocationOperation에서 실행되는 메서드가 내 머리 속의 hackery 알람을 설정하지 않은 취소를 확인하는 방법이 아닌 것 같다는 사실입니다. 상기 해커의 사례에 대해서는 this question을 참조하십시오. 나는 그들을 시험해 보았고, 그들은 일을하고, 그들은 또한 칙칙함을 느낀다.

앞서 언급했듯이 NSOperation 하위 클래스를 작성하는 것은 간단한 작업을 수행하는 데 과도한 것처럼 보일 수 있지만 NSInvocationOperation에 대해 알아 본 것보다 취소를 확인하는 것이 더 우아하다는 것은 의심의 여지가 없습니다.

그래서, 가장 성공적인 끝에 익숙해 진 사람들을 위해 NSOperations이 많은 사람들을 위해? 누락되었을 수있는 NSInvocationOperations를 사용하는 멋진 취소 솔루션이 있습니까? 취소에 대한 일종의 지원이 없으면 NSInvocationOperations가 유용한 상황의 수가 절벽에서 벗어났습니다.

답변

1

하위 클래스 NSOperation. (더 많은 문자 필요)

2

NSOperation을 서브 클래 싱하는 것이 우아한 방법입니다.

기존 코드를 다중 스레드로 리팩터링 할 때만 NSInvocationOperations를 사용하는 경향이 있습니다. 그러면 편리한 바로 가기입니다.

+0

+1 내가 Obj-C/iOS를 파헤 쳤을 때, 처음에는 지나치게 장황한 방법으로 실제로 더 나은 코드 구조를 장려하고 더 많은 권한을 제공하거나 바퀴를 다시 발명하지 마십시오. – jinglesthula

관련 문제