2014-04-04 6 views
0

Objective-c에서 우리는 웹 요청에 대한 콜백 역할을하는 완료 블록을 선언했습니다.블록 내부에서 호출 블록

요청이 실패하면 완료 블록 내에서 함수를 다시 호출하고 싶습니다. 이 작업을 수행 할 때 블록이 완전히 정의되지 않아 EXC_BAD_ACCESS이됩니다.

Java에서는 리스너와 함께이 작업을 수행 할 수 있으므로이 작업은 성가신 작업입니다.

안에서 완성 블록을 호출 할 수 있습니까?

감사합니다.

다음 코드는 오류를 throw합니다. 어떻게 해결할 수 있습니까?

CustomErrorBlock errorBlock = ^(NSError *error) { 

    _processing = NO; 
    loadingView.hidden = YES; 

    self.infoText.hidden = NO; 
    self.infoText.text = @"A network connection error has occurred."; 
}; 


CustomCompletionBlock completionBlock = ^(NSData *data){ 

    if(![self processGetTransactions:data withDict:updateDict]) { 

     [webClient getTransactions:updateDict WithCompletionBlock:completionBlock andErrorBlock:errorBlock]; 
    } 
}; 
[webClient getTransactions:updateDict WithCompletionBlock:completionBlock andErrorBlock:errorBlock]; 
+0

모든 기능을 게시 할 수 있습니까? – bsarr007

+0

completionBlock을 복사합니까? –

+0

복사하는 것을 어떻게 의미합니까? – conor

답변

0

는 특별한 방법으로 처리해야 컴파일러를 알려줍니다 __block를 사용하여 EXC_BAD_ACCESS 충돌을 중지 할 수 있어야한다 또한 객체가 강한 유지하지 만드는 __weak.

참고 : 약한 개체는 여전히 어떤 이유로 강한 개체에 대한 메시지를 표시하지만 별 문제없이 작동합니다.

관련 문제