2011-01-28 6 views
3

나는 this tutorial의 지침에 따라 싱글을 설정,하지만 난 그것을 분석 할 때 다음과 같은 메모리 누수 참조 : 내 단일 클래스에서이 메모리 누수를 해결하려면 어떻게싱글 톤 클래스 메모리 누출

enter image description here

을 ?

+2

1에 할당되지 않은 :이 그것을 변경! – Jake

+0

나에게 분명히 말하게하자. 누군가의 튜토리얼을 광고 지원 사이트에 복사해서 여기에서 링크 할 수는 없다. 그것은 표절이며 일반적으로 원래 작가의 저작권을 침해합니다. 프로모션 링크를 제거하고 질문을 원래 자습서로 보냈습니다. 이것을 다시하지 마십시오. –

답변

6

나는 그 튜토리얼이 잘 작성하지 않은 것을 썼다 누구라고 생각 대신

[[self alloc] init]; 

을, 그것은 수 sould :

_sharedMySingleton = [[MySingleton alloc]init]; 

을 나는 그것과 같은

+0

_sharedMySingleton = [[self alloc] init]도 작동합니다. –

+0

네, 알 겠어요. 모든 답장을 주셔서 감사합니다 ........ – Srinivas

+0

클래스 메소드의 문맥에서'self'는 메시지를받은 클래스입니다.이 경우에는'MySingleton'이됩니다. Anders가 말했듯이 보통'_sharedMySingleton = [[self alloc] init];이라고 쓰는 것이 좋습니다. 그런 식으로 코드가 서브 클래스에 올바르게 작동 할 수 있어야합니다. – jlehr

0

도움이되기를 바랍니다 _sharedMySingleton을 반환하면 여전히 0이됩니다. 따라서 다음 번에도 할당됩니다. alloc이 완료되면 설정을 시도해야합니다.

5

할당을 변수에 할당하지 마십시오. ,

+(MySingleton*)sharedMySingleton 
{ 
    @synchronized(self) 
    { 
     if (!_sharedMySingleton) 
      _sharedMySingleton = [[self alloc] init]; 
    } 

    return _sharedMySingleton; 
} 

편집 내 입력이 너무 느렸다 다른 사람은 이미

+0

당신은 아마 받아 들여진 응답을 당신의 가득 차있는 작은 조각과 함께 가치가 있습니다! – Dave

+0

@Dave 친절하게 감사합니다 선생님 :) – Jake

0

[[self alloc] init];이 :) 대답 한 - 정적 분석기를 사용하기위한 목적