2011-05-04 5 views
1

코코아 메모리 관리가 붙어 있습니다.RetainCount 메모리가 free'ed가 아닙니다.

- (IBAction) createPush:(UIButton *)sender { 
    [create setEnabled:NO]; 
    [release setEnabled:YES]; 

    aLocation = [[Location alloc] init]; 

    // Put some Example Stuff in the Class 
    aLocation.title = @"Apartment"; 
    aLocation.street = @"Examplestreet 23"; 
    aLocation.zip = @"12345"; 
    aLocation.city = @"Exampletown"; 
    aLocation.http = @"http://google.com"; 
    aLocation.info = @"First Info Text"; 
    aLocation.info2 = @"Second Info Text, not short as the first one"; 
    aLocation.logoPath = @"http://google.de/nopic.jpg"; 

    [aLocation.pictures addObject:@"http://google.de/nopic.jpg"]; 
    [aLocation.pictures addObject:@"http://google.de/nopic.jpg"]; 
} 

- (IBAction) releasePush:(UIButton *)sender { 
    [release setEnabled:NO]; 
    [create setEnabled:YES]; 

    [aLocation release]; 
    aLocation = nil; 
} 

이 코드는 내가 설정하거나 변수를 얻을 수 있지만, 나는 '마지막'출시를 호출 할 때 (그래서 카운트를 유지 0) 경우 잘 작동 aLocation의 방법은 호출되는 그것의 dealloc하지만, 악기 할당에 당신은 볼 기억은 되돌려주지 않는다. 여기

위치의 출처 : 헤더 파일에 대한 '.H'대신 '하는 .m'(죄송합니다 그 때문에 대량 보내기 규칙)와

http://homes.dnsalias.com/sof/Location.m 같은 링크.

그리고 전체 프로젝트 : 어떤 도움 http://homes.dnsalias.com/sof/Location.zip

감사합니다, 어디 내 실패는 무엇입니까? 데니스

+0

이것은 'aLocation'과 관련된 모든 코드입니까? 예를 들어, 배열에 넣지 않아도됩니까? –

+0

네,이게 다예요! 당신이 더 자세히보고 싶으면 소스를 다운로드하려면 fre를 느껴보십시오. –

답변

1

이 코드는 내가이 aLocation의 의 dealloc 방법이 가 호출되는 설정하거나 변수를 얻을 수 있지만, 나는 '마지막' 릴리스를 호출 할 때 (0 그래서 수를 유지) 경우 잘 작동하지만 악기에 할당 기억이 돌아 오지 않는다.

"기억이 돌아 오지 않는다"는 것은 무엇을 의미합니까?

이상한 이름이 붙어 있지만 aLocation의 메모리 관리는 위의 코드 (올바른 코드는 dealloc이라고 가정합니다)입니다.


왜 메모리 사용 감소 하나의 객체가 해제 않을 때?

(구절을 읊었)

당신의 객체가 하나의 해제가 ~ 20K 이하로 떨어질 정도 인 스트 루먼트에 표시 할 필요가 있다고, 따라서 상대적으로 작은하고 가능성이 높습니다.

메모리 사용 문제로 인해 앱이 중단되는 경우 단일 할당 해제를 찾는 것이 잘못된 위치입니다. 가장 먼저해야 할 일은 앱이 메모리를 수용하는 이유와 그 성장에 책임이있는 이유에 대해 대답하는 것입니다.

라이브 할당 만 추적하도록 할당 장비를 구성하십시오. 그런 다음 총 메모리 사용을 기준으로 정렬하십시오. 그러면 어떤 유형의 할당이 가장 많은 메모리를 소비하는지 보여줍니다. 그것을 줄여서 시작하십시오.

Heapshot analysis은 이러한 상황에서 매우 효과적 일 수 있습니다.

+0

위대한 링크를 가져 주셔서 감사합니다. 나는 그것에 관해 전에 didnt한다, 나는 이것이 나에게 도움이되어야한다라고 생각한다. –

0

추가 여기에 있기 때문에 연결의 최대 수의 정보를 정기적으로 나는 이미지를 게시 할 수있는 기회를 have'nt ...

는 "전혀 기억이 다시 주어지지"무엇을 의미합니까?

계측기를 실행하면 표시됩니다. Screenshots from Instruments run

자세한 내용은 klick here Instruments Run을 클릭하십시오.

+0

새 제한 사항 (링크 한도로 인해 ... –

0

코드가 정상입니다. 인스 트루먼 트의 결과물로 오인됩니다. 위치 객체가 누설되지 않습니다.

누출의 경우 "누출"장비를 사용하십시오. 그것은 발사되지 않습니다. :-)

+0

괜찮음). 하지만 왜 내가 aLocation 개체를 공개 할 때 메모리 사용량을 줄이지 마십시오. 그게 나에게 명확하지 않습니다. 문제는이 클래스가 더 큰 프로젝트의 일부이며 앱을 사용하면 메모리 사용량이 너무 많아서 앱이 분노한다는 것입니다. –

관련 문제