I는 다음과 같이 보이는 방법 코코아/목표 - C 클래스가 : 내부 블록이 dealloced 된 handler
라고하고 할 때, 그러나내부 블록 내에서 블록을 호출
- (void)doWork:(void (^)(void))handler
{
[self->someObject doActualWork:kWorkID handler:^(Result *result) {
if (handler)
handler();
}];
}
을 프로그램이 호출 될 때 충돌합니다. 블록이 스택에 저장되고 따라서 doWork:
이 완료된 직후에 제거 되었기 때문에 이것이 무엇인지 이해합니다. ARC를 사용하고 있습니다. 이 문제를 해결하려면 어떻게해야합니까?
나는 본다. 나는 블록을'actualWork : handler :'에 복사하지 않았다. 고맙습니다. –