2012-08-16 6 views
0

첨부 된 이미지를 참조하십시오.iOS - 개체가 출시 된 후에도 활동 모니터에 누출이 표시됩니다.

[dataParser parse]; 

이해가 안 - 여기의 보이지 않는 경우 활동 모니터는 다음 줄에 누수가 있음을 보여줍니다 코드

- (void)startParsingData:(NSString *)xmlDataString 
{ 
    NSLog(@"parser started"); 
    // allocate NSXMLParser 
    NSLog(@"XML DATA equals %@", xmlDataString); 
    NSData* xmlData=[xmlDataString dataUsingEncoding:NSUTF8StringEncoding]; 
    dataParser = [[NSXMLParser alloc] initWithData:xmlData]; 
    // assign delegate to parser 
    dataParser.delegate = self; 
    // parse data 
    [dataParser parse]; 
    // release parser 
    [dataParser release]; 
    // release data 
    //[xmlData release]; 
} 

입니다. 왜? 내가 그 물건을 풀었을 때.

편집 : -

- (void)startParsingData:(NSString *)xmlDataString 
{ 
    NSLog(@"parser started"); 
    // allocate NSXMLParser 
    NSLog(@"XML DATA equals %@", xmlDataString); 
    NSData* xmlData=[xmlDataString dataUsingEncoding:NSUTF8StringEncoding]; 
    [[NSURLCache sharedURLCache] setMemoryCapacity:0]; 
    [[NSURLCache sharedURLCache] setDiskCapacity:0]; 
    dataParser = [[NSXMLParser alloc] initWithData:xmlData]; 
    // assign delegate to parser 
    dataParser.delegate = self; 
    // parse data 
    [dataParser parse]; 
    // release parser 
    [dataParser release]; 
    // release data 
    //[xmlData release]; 
} 

아직도 누출이

나는에 방법을 변경했습니다.

enter image description here

+1

당신이 위임 방법을 게시 할 수 :

[[NSURLCache sharedURLCache] setMemoryCapacity:0]; [[NSURLCache sharedURLCache] setDiskCapacity:0]; dataParser = [[NSXMLParser alloc] initWithContentsOfURL:URL]; 

이 질문에 사람들을위한 누출을 중지하는 것제발? 구문 분석 할 호출 내부에 제대로 정리되지 않은 요소가 있습니다. 그것은 대리자 메서드 –

+0

안에 있어야합니다. 거기에 일부 할당 된 문자열이 표시되는데, 이는 릴리스되지 않습니다. 나는 그들을 풀어주고 다시 점검 할 것이다. –

답변

1
+0

그게 정말 도움이되는 정보 Totumus. –

+0

하지만 제 경우에는 URL을 사용하지 않고 대신 NSData 객체를 전달하고 있습니다. 어떤 생각, 그 사건을 어떻게 다룰 것인가. 아니면 버그입니까? –

+0

당신이 생각한 초기화와 같은 방식으로 진행되어야합니다. 가장 중요한 것은 캐시 된 데이터가 있지만 파서를 다시 사용하여 누수가 발생한 순간을 파기하지 않은 것입니다. –

관련 문제