2014-11-06 3 views
0

established-retainCount이 유용하지 않으며, 심지어는 , 특히 (?) -은 디버깅 목적으로 유용합니다.Obj-C에서 메모리 관리를 디버깅하는 방법은 무엇입니까?

그래서 우리는 ARC가없는 세계에있는 것처럼 보이지만 메모리 관련 문제를 디버깅하기 위해 어떤 전략이 있습니까? 객체가 삭제 된 것을 내가 어떻게 생각합니까?

objective-c의 학습자로서, 예를 들어 브리징 캐스트 중에 소유권 이전이 발생할 때와 같이 자원이 언제 할당 해제되는지 확인하고 싶습니다. 나는 내가 다음과 같이 뭔가를 할 거라고 객체의 특정 종류의 유출되지 않았 음을 확인하고 싶었던 일에

+2

'-dealloc'에서'NSLog()'를 호출하십시오. 포인터와 할당을 취소 할 개체의 클래스를 외치십시오. 그리고/또는 dealloc에 ​​중단 점을 배치하십시오. –

+0

'-dealloc'도 C++ 소멸자와 비슷한 방식으로 호출됩니까? –

+0

예. [15 characters] –

답변

1

돌아 가기 :

static int gAllocCount = 0; 

@implementation MyClass 

- (id)init 
{ 
    NSLog(@"ALLOC MyClass %d", ++gAllocCount); 
    return [super init]; 
} 

- (void)dealloc 
{ 
    NSLog(@"DEALLOC MyClass %d", --gAllocCount); 
} 

요즘, 나는 Instruments를 사용합니다.

인스 트루먼 트의 일부 작업은 그다지 쉽지는 않지만, 사용법을 알면 매우 강력한 도구입니다. 모든 객체의 alloc/retain/release/dealloc을 모두 기록하고 스택 추적을 완료하고 특정 클래스 이름별로 필터링 할 수 있습니다.

관련 문제