어떻게 설정합니까 NSZombieEnabled
와 CFZombieLevel
엑스 코드 4 년 내 실행 파일?
답변
Xcode 4.x에서
⌥⌘R
(또는 클릭 Menubar
> Product
> Scheme
>Edit Scheme
)
“진단”탭을 선택하고 “좀비 개체 사용”을 클릭하십시오.
이렇게하면 릴리스 된 객체가 다시 사용될 때 콘솔 경고를 인쇄하는 NSZombie 인스턴스로 전환됩니다. 이것은 메모리 사용을 늘리고 (실제로 객체가 해제되지는 않음) 오류보고를 향상시키는 디버깅 보조 도구입니다.
일반적인 경우는 개체를 과도하게 해제하고 어떤 개체를 모르는 경우입니다.
- 좀비로 :
-[UITableView release]: message sent to deallocated instance
- 좀비없이 :
이 Xcode 설정은 App Store 제출을 위해 애플리케이션을 아카이브 할 때 무시됩니다. 응용 프로그램을 해제하기 전에 아무것도 만질 필요가 없습니다.
누르면 ⌥⌘R지키는 동안 제품> [실행]을 선택하는 것과 동일 Alt키 것은 눌렀습니다.
“좀비 개체 사용”확인란을 클릭하는 것은 인수 탭의 “환경 변수”섹션에서 “NSZombieEnabled = YES”를 수동으로 추가하는 것과 같습니다.
답변
Jano의 대답은 그것을 찾는 가장 쉬운 방법입니다 .. 다른 방법은 구성표 드롭 다운 막대-> 구성표 편집-> 인수 탭을 클릭 한 다음 환경 변수 열에 NSZombieEnabled를 추가하고 값 열에 YES를 추가하는 것입니다 …
답변
이 대안이 더 편리하다는 것을 알았습니다.
- “실행 버튼 드롭 다운”을 클릭하십시오.
- 목록에서
Profile
- “Instruments”프로그램을 열면 선택할 수도 있습니다
Zombies
- 이제 앱과 상호 작용하고 오류를 일으킬 수 있습니다
- 오류가 발생하자마자 개체가 해제되어 할당이 해제 될 때 힌트를 얻을 수 있습니다.
좀비가 감지되면 문제의 개체가 할당 된 시점과 보관 또는 해제 된 위치를 보여주는 깔끔한 “좀비 스택”을 얻습니다.
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의 진단 탭을 사용할 때의 장점 :
-
진단 탭에서 옵션을 선택 취소하는 것을 잊어 버린 경우 메모리에서 객체가 해제되지 않습니다.
-
손상된 객체가 어떤 방법으로 할당 / 릴리스 또는 유지되는지를 보여주는 더 자세한 스택을 얻을 수 있습니다.
답변
Xcode 4.2에서
- 프로젝트 이름 / 구성표 / 진단 /
- 좀비 개체 사용 확인란
- 끝났어
답변
Xcode 7에서
⌘<
또는 > 메뉴 Edit Scheme
에서 선택하십시오Product
Scheme
선택 Enable Zombie Objects
양식 Diagnostics
탭을
또는 .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를 추가하십시오.
행운을 빕니다 !!!