2009-10-11 4 views
7

NSUrlConnection 객체를 해제 할 올바른 지점은 무엇입니까?NSUrlConnection 객체를 해제해야하는시기

내 프로그램에서 NSUrlConnection을 할당 한 다음 initWithRequest를 비동기 적으로 시작합니다.

나는 이제 개체를 공개 할 책임이 있습니다. 언제 제가 출시 할 수 있습니까? 즉시 내가 다시 사용하지 않는다면?

+0

NSUrlConnection을 만든 후 retaincount를 확인했습니다. 2가되었습니다. 즉시 출시하는 것이 맞다고 생각합니다. 아무도 이것을 모순되거나, 이것을 말하는 대답을 만드시겠습니까? – Alan

답변

7

NSUrlConnection의 사용을 즉시 해제 할 수 있습니다.

프레임 워크가 끝나면 해제됩니다.

+1

나는 그것이 좋은 생각이 아니라고 생각한다. 나는 내 코드를 확인한 다음 충돌이 발생했다. 그리고 사과 샘플 코드도 그것을 공개하지 않았습니다. 예를 들어 전화 회의에서 전화를 푸십시오. didFinishLoading ... – karim

10

NSURLConnection으로 끝났 으면. NSURLConnection 대리인이 - (void)connectionDidFinishLoading:(NSURLConnection *)connection 또는 - (void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error을 받으면 작업이 완료되었음을 알 수 있습니다. 이 두 가지 방법이 끝나면 그것을 놓으십시오.

+0

이로 인해 내 응용 프로그램이 BAD_ACCESS와 충돌을 일으 킵니다. @Alan이 말한대로 곧 풀 수 있다고 생각합니다. – Nathan

1

프레임 워크에서 완료되었다는 알림을 표시 할 때까지 해제 할 필요는 없습니다 (예 : connection:didFailWithError:).

1

이것은 조금 늦었습니다 (질문은 2009 년 1 년 전에 게시되었습니다).하지만 NSUrlConnection 코드에 문제가있었습니다. NSUrlConnection이 계속 충돌하고 NSUrlConnection [theConnection release];이 내 릴리스와 관련 있다고 생각했습니다. Apple의 예제 인 here처럼 코드를 작성했지만, Apple이 didFailWithErrorconnectionDidFinishLoading에서 수행하는 작업을 릴리스하는 것이 아니라 "목록 1"에서 생성 된 연결을 해제 한 결과 제대로 작동하는 것으로 보입니다. 나는 완전히 확신 할 수는 없지만, 아마도 그 대표자들 모두에게 전화가 걸려 왔을 것이고, 이중 발표는 그 충돌을 일으킨 원인 일 것입니다. 이 질문을 읽을 때까지 NSUrlConnection 객체가 생성 된 직후에 릴리스 할 수 있는지 확신 할 수 없었지만 트릭을 수행하는 것처럼 보였습니다.