2009-08-06 3 views
1

이 iPhone 3.0 SDK 코드로 계측기 메모리 누수가 발생합니다.iPhone 메모리 누수 JSON 라이브러리

// .h 
@property (nontatomic,retain) NSMutableArray *tweets; 


// .m 
import" JSON.h" 
@synthesize tweets; 
... 
    tweets = [[NSMutableArray alloc] init]; 

    NSURL *url = [NSURL URLWithString:@"http://www.someurl.com"]; 
    NSString *jsonString = [NSString stringWithContentsOfURL:url]; 
    NSArray *results = [jsonString JSONValue]; 
    NSArray *data = [results valueForKey:@"stories"]; 

    for(NSDictionary *tweet in data) { 
     TweetmemeData *tweetmeme = [[TweetmemeData alloc] initWithTweet:tweet]; 
     [tweets addObject:tweetmeme]; 
     [self debugDump:tweetmeme]; 
     [tweetmeme release]; 
    } 
    [results release]; 

    return tweets; 

가능한 경우는, 메모리 관리의이 양식에 대한 자세한 내용을 설명해주십시오 :

것은 내가 여기 http://code.google.com/p/json-framework/

에서 JSON을 사용하고있어 내 코드입니다. 나는 retain/release에 매우 익숙하지만 분명히 구현하는 데 문제가있다. :)

고마워!

+0

NSArray * 데이터를 공개하지 않는다는 것에 주목하십시오. 잠금 설정을하면 어떻게됩니까? 또한, 결과가 도움이된다면 ... 미리 감사드립니다. –

+0

규칙에 따르면 [jsonString JSONValue]에는 "alloc", "new"또는 "copy"라는 단어가 없으므로 아마도 자동 실행 된 포인터를 반환합니다 즉 "결과"배열을 릴리스 할 필요가 없다는 의미입니다. 동일한 "데이터"NSArray갑니다. –

+0

'짹짹'이 자동으로 리사이징되어야한다고 봅니다. 당신은 그것을 초기화하고 메소드의 끝에서 그것을 반환합니다. 또한 'tweets'가 속성 인 경우 트윗 대신 self.tweets을 사용하여 init'd 일 때 속성 선언 당 유지됩니다. 모든 코드가 없으면 말하기 어렵지만 표시 한 것에서는 불균형 해 보입니다. – Hunter

답변

1

시뮬레이터에서 발생할 많은 누수가 하드웨어에서 전혀 발생하지 않는다는 점은 주목할 가치가 있습니다. 시뮬레이터를 사용하고 계시거나 전화로 테스트 하시겠습니까?

+0

안녕하세요! 정보 주셔서 감사합니다. 시뮬레이터를 사용하고 있습니다 .. 장치를 확인합니다. NSArray * 데이터를 공개하지 않는다는 것에 주목하십시오. 잠금을 설정하면 어떻게됩니까? 또한 결과가 도움이 될 것 같으면 ... 미리 감사드립니다. –

+0

메모리 관리에 대한 정보는 Apple 공식 가이드 http://developer.apple.com/iPhone/library/documentation/Cocoa/에서 확인하십시오. 개념적/MemoryMgmt/MemoryMgmt.html 그리고 여기 제가 찾은 또 다른 좋은 기사가 있습니다 : http://akosma.com/2009/01/28/10-iphone-memory-management-tips/ – Sneakyness