2012-03-26 3 views
1

UIImage를 반환하는 완료 블록이있는 비동기 호출을 작성한 다음 완료 블록에서 UIImageView가 해당 이미지를 사용하도록 UIImageView를 설정합니다. 내 질문은 해당보기 컨트롤러가 UINavigationController 스택을 갑자기 튕겨지고 완료 블록이 실행되기 전에 더 이상 살아 있지 않으면 어떻게됩니까?Objective C - 완료 블록 및 뷰 컨트롤러가 스택 해제 됨

[MyAPI getImage:imageID completionBlock:^(MyAPIStatus status, id result) { 
     if (status == kSuccessful) { 
      self.ImageView.image = [UIImage imageWithData:result]; 
     } 
    }]; 

답변

4

API에 전달 된 블록이 self을 캡처 (보유)하므로, self이 활성화됩니다. 따라서 retain/release를 올바르게 사용하거나 ARC를 사용하면 무해합니다.

0

대부분 EXC_BAD_ACCESS입니다. API에는 뷰 컨트롤러가 할당 해제 될 때 호출 할 수있는 비동기 작업을 취소하는 다른 방법이 있어야합니다.

관련 문제