2011-11-05 4 views
0

이것은 초보자 용 질문 일지 모르지만 나는 iOS 개발자가 처음이다.정확하게 취소하는 방법 NSURLConncetion

NSURLConnection* mImageUploadConnection을 인스턴스 멤버로 선언했습니다. 다음을 실행하여 생성하십시오.

mImageUploadConnection = [[NSURLConnection alloc] initWithRequest:someRequest delegate:self startImmediately:YES]; 

할당 후 보유 개수가 2 인 이유는 무엇입니까? (이건 아마도 애플 내부의 것들이 겠지요? 나는 한 번만 연결 해제해야합니까?). 사용자가 현재 탐색보기에서 나올 때

내가

- didFailWithError 
- connectionDidFinishLoading 

방법의 연결을 해제하고있어,하지만 난 또한 연결을 취소해야 할 것은, 어떤 경우입니다. 나는. 취소는 mImageUploadConnection이 완료되지 않았거나 실패한 경우에 발생할 수 있습니다. 다음과 같은 방법으로 연결을 취소합니다.

if (mUploadeImagConnection != nil) { 
    [mUploadeImageConnection cancel]; 
    [mUploadeImagConnection release]; 
} 

is가 완료되지 않았거나 실패하면 연결이 올바르게 취소됩니다. 하지만 연결이 성공적으로 완료되면 (즉, 액세스가 잘못됨) 마지막 코드 조각이 실패합니다. 즉, 한 번 릴리스되었습니다.

  • 연결이 성공적으로 완료된 후 취소 할 때 mUploadeImagConnection의 보유 개수가 1 인 이유는 무엇입니까 ???
  • 연결 상태가 일 경우 마지막 코드 단편을 확인하고 취소 메시지를 보내지 않으려면 어떻게해야합니까?

답변

0

출시 후 ivars를 nil으로 설정하십시오.

+0

유틸리티 클래스를 통해서만 동일한 작업을 수행했습니다. 즉, 일부 메소드에 연결을 전달하고 해당 메소드 내에서 nil을 해제하여 해제했습니다. 그리고 전혀 작동하지 않았습니다. 그러나 동일한 코드로 직접 처리하면 도움이되었습니다. 당신의 대답을 옳은 것으로 표시 할 것입니다. 실제로 Object 포인터가 복사 될 때 Utiliy 메서드에서 nil을 할당하면 안됩니다. 네, 부끄러운 줄 알아! – deimus