2011-08-11 7 views
2

비동기 NSURL 요청을 캡슐화하는 객체가 있습니다. 언제 출시해야합니까?비동기 적으로 사용되는 객체는 언제 릴리스해야합니까?

StrangersRequest *request = [[StrangersRequest alloc] init]; 
request.strangersListener = strangersListener; 
[request send]; 

엑스 코드에서 분석은 내가 즉시 해제해야 말한다 -하지만이 된 URLRequest 콜백을 처리해야하기 때문에 그것은 옳지 않아.

비동기 이벤트를 처리하는 객체를 해제하는 데 적합한 패턴은 무엇입니까?

요청이 완료되면 출시해야한다고 생각합니다 (connectionDidFinishLoading). 그렇다면 어떻게 멈출 수 있습니까? 에서 불만을 제기합니까?

답변

2

NSThread 모델을 따르고 비동기 작업이 완료 될 때까지 개체를 유지할 수 있습니다.

+0

예. 나는 그것을 좋아한다. 감사. –

4

사용하는 클래스에서 참조를 유지 한 다음 즉시 삭제해야합니다. 그런 다음 수업이 끝나면 참조를 삭제할 수 있습니다. 이런 식으로 :

StrangersRequest *request = [[StrangersRequest alloc] init]; 
request.strangersListener = strangersListener; 
[request send]; 
self.strangersRequest = request; 
[request release]; 
+0

그게 효과가 있습니다. 감사! –

0

하나의 해결책은 로컬 변수 대신 ivar에 저장하는 것입니다.

관련 문제