IT TIP

인스트루먼트 할당은 사용자 정의 클래스의 객체 할당 및 할당 해제를 추적합니다.

itqueen 2020. 12. 27. 20:35
반응형

인스트루먼트 할당은 사용자 정의 클래스의 객체 할당 및 할당 해제를 추적합니다.


Objective-C 객체의 할당 및 할당 해제를 추적 할 수 있습니까? 예를 들어 Book 클래스가있는 경우 Book 유형의 객체에 대한 모든 할당 및 할당 해제를 추적하고 싶습니다. UIViewController, UIWindow, UIView, NSDictionary 등과 같은 모든 기본 SKD 클래스를 추적 할 수 있지만 정의 된 클래스에서 생성 된 개체도 추적하고 싶습니다.


Allocations 도구를 사용하여 객체의 수명주기를 추적 할 수 있습니다. "할당"템플릿을 사용하는 경우 기록 mallocfree이벤트로 구성됩니다 . 당신은 또한 기록하도록 구성 할 수 있습니다 retain, releaseautorelease할당 된 메모리 기기 설정에서 확인란 "레코드 참조 카운트"을 설정하여 이벤트 :

레코드 참조 횟수 체크 박스

(Instruments가 녹음하는 동안에는 이것을 전환 할 수 없으며 템플릿을 선택하자마자 기본적으로 시작됩니다.)

Xcode 9 업데이트 : Apple은 이러한 설정을 찾기가 더 어려워졌습니다. 이제 할당 악기를 선택한 다음 메뉴 모음에서 파일> 녹음 옵션을 선택해야합니다.

실행 후 세부 정보 창 (창 하단)의 기본 설정 인 할당> 통계> 개체 요약보기를 사용하여 개체를 찾을 수 있습니다.

세부 정보 창에 대한 개체 요약 설정

실행을 중지하기 전에 할당이 취소 된 개체를 보려면 할당 수명 설정을 "Created & Still Living"(기본값)에서 "All Objects Created"로 변경해야합니다.

할당 수명 설정

특정 클래스의 개체를 찾으려면 창 도구 모음의 오른쪽 끝에있는 검색 필드에 클래스 이름을 입력하여 시작합니다. 그런 다음 목록보기의 범주 열에서 클래스 이름을 찾아 그 위에 마우스를 놓고 그 옆에 나타나는 화살표를 클릭합니다. 예를 들어 내 앱에라는 클래스가 Tile있으므로이를 검색 한 다음 Tile목록보기에서 옆에있는 화살표를 클릭합니다 .

수색

이제 목록보기에의 모든 인스턴스가 표시됩니다 Tile. (당신은 객체가 아닌 슈퍼 클래스의 실제 클래스를 입력해야합니다. 입력 NSObject단에 의해 생성 된 오브젝트를 찾을 수 있습니다 [NSObject alloc], 그에 의해 생성 된 개체 없습니다 [Tile alloc].) 나는 특정 인스턴스에 대한 기록을 볼 수 있습니다 클릭하여 다음 화살표 해당 인스턴스의 주소로 :

세부 정보 얻기

객체에 대한 상세보기에서, 나는 볼 수 mallocfree나는 "레코드 참조 횟수"에 설정되어 있기 때문에, 이벤트를하고, 나는 또한 볼 수 있습니다 retain, release그리고 autorelease카운트를 유지 개체의에 메시지와 자신의 효과를. 이러한 이벤트에 대한 호출 스택을 보려면 창 오른쪽에있는 확장 된 세부 정보 패널을 열 수 있습니다.

호출 스택의 확장 된 세부 사항

참조 URL : https://stackoverflow.com/questions/14890402/instruments-allocations-track-alloc-and-dealloc-of-objects-of-user-defined-class

반응형