2012-05-03 3 views
0

코드가 아래와 같은 메모리 누수가 있습니다. 여기서 self.firstURLConn은 @property (비 원자, 유지)입니다. 객체 할당 및 이슈 해제 문제가 발생했습니다.

NSMutableURLRequest* req = [[NSMutableURLRequest alloc] initWithURL:urlcachePolicy:NSURLRequestReloadIgnoringLocalAndRemoteCacheData timeoutInterval:60.0f]; 

self.firstURLConn = [[[NSURLConnection alloc] initWithRequest:req delegate:self] autorelease]; 

[req release];//memory leak here and with self.firstURLConn 

메모리가 여기 유출 왜

답변

0

firstURLConn이 REQ를 유지합니다, firstURLConn가 REQ를 해제 때 해제 만됩니다 REQ.

1

아직 제품> 분석을 실행 했습니까? 만약 당신이 우리에게 메모리 누출 문제 로그를 보여주십시오 않았다.

그들은 메모리 누수 문제가있는 코드 줄을 말할뿐만 아니라 문제의 원인이되는 코드 단계를 보여줍니다.

누출 공구가있는 계측기 도구를 사용하는 것이 좋습니다. 코드 문제에 대한 심층적 인 정보를 보여줍니다.

편집 : req variable miss autorelease. 때문에 req 2 시간을 유지하고 있습니다. 때문에 firstURLConn이 속성을 유지에 선언했다 당신이

NSMutableURLRequest* req = [[[NSMutableURLRequest alloc] initWithURL:urlcachePolicy:NSURLRequestReloadIgnoringLocalAndRemoteCacheData timeoutInterval:60.0f] autorelease]; 

self.firstURLConn = [[[NSURLConnection alloc] initWithRequest:req delegate:self] autorelease]; 

[req release];//memory leak here and with self.firstURLConn 

같이 코드를 변경합니다. 대리자 방법 (미래에 언젠가) 비동기 적으로 반환하기 때문에 그래서, 할당 해제의 방법은, 당신은 당신이 대리자 메서드의 내부에있는 NSURLConnection을 해제해야이 속성에

- (void)dealloc 
{ 
    self.firstURLConn = nil; 
    [super dealloc]; 
} 
+0

내 질문에 내가 어디에 메모리가 누출 언급했다. – Mann

+0

전체 코드를 분석하겠습니다. 문제 클래스 .h 및 .m 코드를 표시하십시오. – Sakares

+0

이미 내 대답을 편집하고 코드를 조정하십시오. – Sakares

0

nil을 설정해야합니다. autorelease를 제거하고 완료 및 실패한 대리자 메소드에 릴리스를 추가하십시오.

관련 문제