[objective-c] Xcode 4에서 NSZombieEnabled를 어떻게 설정합니까?

어떻게 설정합니까 NSZombieEnabledCFZombieLevel엑스 코드 4 년 내 실행 파일?



답변

Xcode 4.x에서

R

(또는 클릭 Menubar> Product> Scheme>Edit Scheme )

“진단”탭을 선택하고 “좀비 개체 사용”을 클릭하십시오.

"좀비 개체 사용"을 클릭하십시오

이렇게하면 릴리스 된 객체가 다시 사용될 때 콘솔 경고를 인쇄하는 NSZombie 인스턴스로 전환됩니다. 이것은 메모리 사용을 늘리고 (실제로 객체가 해제되지는 않음) 오류보고를 향상시키는 디버깅 보조 도구입니다.

일반적인 경우는 개체를 과도하게 해제하고 어떤 개체를 모르는 경우입니다.

  • 좀비로 : -[UITableView release]: message sent to deallocated instance
  • 좀비없이 : EXC_BAD_ACCESS

이 Xcode 설정은 App Store 제출을 위해 애플리케이션을 아카이브 할 때 무시됩니다. 응용 프로그램을 해제하기 전에 아무것도 만질 필요가 없습니다.

누르면 R지키는 동안 제품> [실행]을 선택하는 것과 동일 Alt키 것은 눌렀습니다.
“좀비 개체 사용”확인란을 클릭하는 것은 인수 탭의 “환경 변수”섹션에서 “NSZombieEnabled = YES”를 수동으로 추가하는 것과 같습니다.


답변

Jano의 대답은 그것을 찾는 가장 쉬운 방법입니다 .. 다른 방법은 구성표 드롭 다운 막대-> 구성표 편집-> 인수 탭을 클릭 한 다음 환경 변수 열에 NSZombieEnabled를 추가하고 값 열에 YES를 추가하는 것입니다 …


답변

이 대안이 더 편리하다는 것을 알았습니다.

  1. “실행 버튼 드롭 다운”을 클릭하십시오.
  2. 목록에서 Profile
  3. “Instruments”프로그램을 열면 선택할 수도 있습니다 Zombies
  4. 이제 앱과 상호 작용하고 오류를 일으킬 수 있습니다
  5. 오류가 발생하자마자 개체가 해제되어 할당이 해제 될 때 힌트를 얻을 수 있습니다.

좀비

좀비가 감지되면 문제의 개체가 할당 된 시점과 보관 또는 해제 된 위치를 보여주는 깔끔한 “좀비 스택”을 얻습니다.

Event Type    RefCt     Responsible Caller
Malloc            1     -[MyViewController loadData:]
Retain            2     -[MyDataManager initWithBaseURL:]
Release           1     -[MyDataManager initWithBaseURL:]
Release           0     -[MyViewController loadData:]
Zombie           -1     -[MyService prepareURLReuqest]

Xcode Schemes의 진단 탭을 사용할 때의 장점 :

  1. 진단 탭에서 옵션을 선택 취소하는 것을 잊어 버린 경우 메모리에서 객체가 해제되지 않습니다.

  2. 손상된 객체가 어떤 방법으로 할당 / 릴리스 또는 유지되는지를 보여주는 더 자세한 스택을 얻을 수 있습니다.


답변

Xcode 4.2에서

  • 프로젝트 이름 / 구성표 / 진단 /
  • 좀비 개체 사용 확인란
  • 끝났어

답변

Xcode 7에서

<

또는 > 메뉴 Edit Scheme에서 선택하십시오ProductScheme

선택 Enable Zombie Objects양식 Diagnostics탭을

xcode 7 좀비 플래그

또는 .xcconfig파일 을 선호하는 경우이 기사 https://therealbnut.wordpress.com/2012/01/01/setting-xcode-4-0-environment-variables-from-a-script/를 읽을 수 있습니다


답변

Cocoa는 이러한 상황을 디버깅하는 기능을 크게 향상시키는 멋진 기능을 제공합니다. NSZombieEnabled라는 환경 변수 입니다. objective-C에서 NSZombieEnabled 설정을 설명하는 이 비디오 를보십시오.


답변

Xcode> 4.3에서 :

체계 드롭 다운 막대-> 체계 편집-> 인수 탭을 클릭 한 후 환경 변수 열에 NSZombieEnabled를 추가하고 값 열에 YES를 추가하십시오.

행운을 빕니다 !!!