2012-01-24 5 views
-1

xcode에서 '분석'도구를 사용하여 앱에서 누출 가능성을 검사하고 있습니다.'잠재적 인 누출'문제를 해결하는 방법

결과적으로 다음과 같은 경고가 표시됩니다.

enter image description here

어떻게 위의 잠재적 누수를 해결하는 방법은 무엇입니까? "self.answerArray"나는 당신이 배열에 mutableCopy라고했습니다

enter image description here

답변

1

내 헤더 파일에 선언 단지 배열입니다 (하나의 유지 카운트 새로운 배열을 반환 - 당신은 그것을 소유) , 당신은 속성에 할당합니다. (강하고 유지되는 속성이라고 가정합니다.) 당신은 그것을 릴리즈하지 않습니다. 넌 기억을 새고있어.

속성에 할당 한 후 tempArray을 릴리스해야하며 속성이 클래스 'dealloc 메소드에서 해제되었는지 확인해야합니다.

+0

오 변종 복사본이 보관 횟수를 늘린다는 것을 알지 못했습니다. 응답 주셔서 감사합니다 – Zhen

+0

이름에 Copy, Alloc, Retain 또는 New가있는 항목은 규칙에 따라 호출자가 소유합니다. 나는 항상 CARN 규칙으로 생각했습니다. :) – Jasarien

0

당신은 선언, 아마 더 나은, (새로운 하나를 할당하기 전에 릴리스 된 개체 새 개체를 유지)/answerArray에 릴리스를 유지, 또는

@property (retain) NSArray* answerArray; 

이 방법 컴파일러 버전을 생성하는 속성을 보내야 하나/보유 (on assign). documentation을 참조하십시오. 그렇지 않으면 answerArray 객체가 할당 (answerArray = tempArray)이 메모리에 매달리기 전에 참조되고있었습니다.

이 경우 당신은 풀을 autorelease를 위해 임시 변수를 추가 할 수 있는지 확인 선언 된 속성을 사용합니다 :

tempArray = [[self.answerArray mutableCopy]autorelease]; 

을하거나 (이 범위를 벗어나 직전)는 자신을 해제 보낼 수 있습니다.

관련 문제