programing

NSZombie란 무엇입니까?

muds 2023. 5. 31. 18:37
반응형

NSZombie란 무엇입니까?

설정하라는 제안을 봤어요NSZombieEnabled로.true디버깅하는 동안.NSZombie란 무엇입니까?틀인가요?설정?

메모리 디버깅 보조 장치입니다.구체적으로 설정할 때NSZombieEnabled그러면 객체가 할당 해제되지 않고 유지 카운트 0에 도달할 때마다 객체는 자체적으로 변형됩니다.NSZombie사례.이러한 좀비는 메시지를 받을 때마다 충돌하거나 예측할 수 없는 방식으로 행동하는 대신 경고를 기록합니다.따라서, 고급 도구나 건초 스택 검색에서 정교한 바늘 없이도 미묘한 오버 릴리스/자동 릴리스 문제를 디버그할 수 있습니다.

이 이름은 객체가 일반적으로 유지 카운트 0에 도달할 때 "죽은" 것으로 간주된다는 사실에 대한 상당히 명백한 플레이입니다.이 설정으로, 그들은 살아있지도 않고 완전히 죽은 것도 아닌 이상한 반감기 속에서 계속 존재합니다.실제 좀비와 매우 비슷하지만, 그들은 오히려 더 적은 뇌를 먹습니다.

아담은 좀비가 무엇인지 잘 설명했지만, 환경 변수를 사용하는 것은 좀비를 찾고 추적하는 가장 좋은 방법이 아닙니다.

좀비 탐지에 대한 훨씬 더 나은 접근 방식은 Instruments를 사용하는 것입니다. XCode에서 "Run with Instruments"로 시작하여 "Allocations"를 선택합니다.

그런 다음 시작 직후 녹화를 중지하고 할당 계측기의 "i" 버튼을 누른 다음 "기준 카운트 활성화" 및 "NSZombie Detection 활성화"를 켭니다.이제 기기에서 Record(기록)를 다시 누르면 앱이 시작됩니다. 좀비 개체가 메시지를 보내면 기록이 중지되고 기록 타임라인에 대화 상자가 나타납니다. 이 버튼을 클릭하면 개체가 유지되거나 해제된 모든 위치를 찾을 수 있습니다.

편집: 이전의 조언은 XCode 3에 대한 것이었습니다. 여기 XCode 4에 대한 추가 정보가 있습니다.

XCode 4.2에는 좀비 탐지를 훨씬 더 쉽게 사용할 수 있는 메커니즘인 좀비 계측기가 있습니다.앱을 시작하기 위해 "실행" 대신 "프로파일"을 사용하면 기기 선택기가 나타납니다."좀비"를 선택하면 앱이 실행되기 시작합니다. 충돌의 원인이 무엇이든 하면 "좀비 메시지"라는 대화 상자가 나타납니다.

여기서 대화 상자의 작은 화살표를 클릭합니다.그러면 좀비 개체가 생성, 보존 또는 릴리스된 모든 시간 목록이 표시됩니다.사이드바를 위로 당기면 각 항목으로 이동하여 보유 카운트의 각 조정을 담당한 코드에 대한 스택 추적을 확인할 수 있습니다.

Kendall이 추가한 내용에 동의합니다. 매우 유용하지만 환경 변수를 계속 사용하는 것을 잊지 않도록 권장합니다.(현재 만료된) Cocoa Dev의 링크와 유사하게, 놓치지 않기 위해 이것을 넣었습니다.

if(getenv("NSZombieEnabled") || getenv("NSAutoreleaseFreedObjectCheckEnabled")) {
    NSLog(@"ZOMBIES/AFOC ARE ENABLED!!! AAAAARRRRRRGH!!! BRAINS!!!");
} 

그것은 제 관심을 아주 잘 사로잡습니다.

누군가를 도울 것입니다.

계측기에 대한 상세 문서입니다.https://developer.apple.com/library/watchos/documentation/DeveloperTools/Conceptual/InstrumentsUserGuide/index.html #//apple_ref/doc/uid/TP40004652-CH3-SW1

언급URL : https://stackoverflow.com/questions/4168327/what-is-nszombie

반응형