2012-06-09 2 views
1

메모리 누수를 해결하는 방법 : 여기 내가 ~ 6킬로바이트 누수이 방법이 어떻게 오토 릴리즈 객체

+ (EInspectorFacilityInfo*) newWithNode: (CXMLNode*) node 
{ 
    if(node == nil) { return nil; } 
    return (EInspectorFacilityInfo*)[[[EInspectorFacilityInfo alloc] initWithNode: node] autorelease]; 
} 

악기의 메모리 누수를 나타내는 스크린 샷이다. enter image description here

이 메모리 누수를 제거하려면 어떻게해야합니까?

+5

이름 바꾸기 관례에 따라'new'로 시작하는 메소드는 자동 릴리즈되지 않은 객체를 반환합니다. 어쩌면 그것이 이유 일 것입니다. –

+0

이 방법을 어떻게 호출하는지 알려주세요. – taskinoor

+0

'EInspectorFacilityInfo' 클래스는 어떻습니까? 관리하는 객체를 해제하지 않으면 누출이 내부에있을 수 있습니다. 전송할 필요가 없습니다. –

답변

7

이 메서드는 단어 'new'를 가지고 있으므로 Objective-C conventions에 의해 개체에 대한 소유 참조를 반환 할 것으로 예상됩니다. 보유 개수가 1 인 객체입니다. 객체를 자동 해제하면 보유 개수가 0 인 객체가 반환됩니다.

메서드 이름에서 new라는 단어를 제거하거나 객체를 자동 해제하지 않아야합니다. 호출자는이를 릴리스해야합니다. 이 문제를 해결하고 코코아 코딩 스타일과 정신을 일치합니다

+ (EInspectorFacilityInfo*) inspectorFacilityInfoWithNode: (CXMLNode*) node 

: Jasarien 응답에

+0

나는 new라는 단어를 'create'와 같은 것으로 바꾸었고 메모리 누수가 사라졌습니다 ... 친절한 도움을 주셔서 대단히 감사드립니다. – JAHelia

1

작은 또한, 당신은 같은 당신의 방법 뭔가 이름을합니다.

관련 문제