블록, 내가 원하는 것을 정확하게 설명하지 않습니다 전무 : Objective C Blocks as Async-callbacks & BAD ACCESS블록과 비동기 콜백의 dealloc 개체 - 필요 비슷한 질문이 여기에있다
을 내가 함께 서비스를 호출하는 뷰 컨트롤러를 가지고 비동기 콜백. 콜백은 뷰 컨트롤러의 변수를 참조하여 블록을 채우는 블록을 사용하여 수행됩니다.
그것은 그래서 다음과 같습니다
- (void) loadData {
__block MyViewController *me = self;
[self.service executeWithCompletion:^(NSArray *result, NSError *error) {
if (!error) {
me.data = result;
}
}];
}
을하지만, 내가보기 컨트롤러를 할당 해제의 경우, '나'는 다음 심하게 콜백에 의해 액세스 할 수 있습니다.
'나를'NULL로 만드는 가장 간단한 방법은 무엇입니까? iVar로 넣으면 순환 참조가 다시 나타납니다 ... 생각하십니까?
는 내가 분명 뭔가 ....
감사
아직 전체 프로젝트를 ARC로 이전 할 수 없습니다. 너무 큽니다. 어쨌든 iOS 4를 타겟팅하고 있습니다. 예, 서비스에 취소를 추가하는 중입니다. 어떻게 든 __block 변수를 iVar 범위에 넣을 수 없으며 dealloc에서 nill/NULL을 사용할 수 있습니까? 이것은 내가 언급 한 광산과 비슷한 게시물에 언급되어 있습니다. – bandejapaisa
@bandejapaisa : 아니요, '__block'은 그렇게 작동하지 않습니다. –
@bandejapaisa : 블록 전에 어떻게 하시겠습니까? 그것을 취소하거나 동일한 충돌 문제가있는 방법이 필요합니다. – user102008