iPad 앱을 개발 중입니다. 그것은 NSOperationQueue에 의해 처리 된 백그라운드에서 무언가를 다운로드하기 위해 NSOperation을 사용합니다. 나는 NSOperation에 retain을 추가하지 않는 한, operation의 action이 수행 된 후에 충돌을 발견했다. NSOperationQueue의 addOperation은 NSOperation을 유지하고 NSOperation 자체가 대상 객체를 유지한다고 말합니다. 그러므로 나는 왜 여분의 보유가 필요한지 이해하지 못하고있다.NSOperation에 추가 유지가 필요합니다.
비동기 작업을 취소하고 그 자리에 새 패턴을 만드는 패턴을 구현하려는 경우를 제외하면 내 진도를 저해하지 않을 것입니다. iPhone OS 4.0에서 (waitUntilFinished를 제공하는) 아직 개발할 수 없기 때문에 추가 보유권을 해제하거나 추가 보유권을 보유하지 않는 것이 안전하다는 것을 알 수있는 다른 방법이 필요합니다.
제안 사항?
뭔가가 엉망이 된 것처럼 들립니다. 코드를 게시 할 수 있습니까? –
코드가 너무 복잡하여 게시 할 수 없습니다. 그러나 그 문양은 질문과 같습니다. i : NSOperation * op = [[NSInvocationOperation alloc] initWithTarget : 셀렉터 : @selector (someSelector :) object : 클라이언트] autorelease]; [myOpQueue addOperation : op]; op에 여분의 유지를 넣지 않으면 someSelector가 실행 된 후 충돌이 발생합니다. self는 존재하는 싱글 톤이며 클라이언트는 op에 의해 유지되어야합니다. – Shaheen