어떻게 설정합니까 NSZombieEnabled
와 CFZombieLevel
엑스 코드 4 년 내 실행 파일?
어떻게 설정합니까 NSZombieEnabled
와 CFZombieLevel
엑스 코드 4 년 내 실행 파일?
답변:
Xcode 4.x에서
(또는 클릭 Menubar
> Product
> Scheme
>Edit Scheme
)
"진단"탭을 선택하고 "좀비 개체 사용"을 클릭하십시오.
이렇게하면 릴리스 된 객체가 다시 사용될 때 콘솔 경고를 인쇄하는 NSZombie 인스턴스로 전환됩니다. 이것은 메모리 사용을 늘리고 (실제로 객체가 해제되지는 않음) 오류보고를 향상시키는 디버깅 보조 도구입니다.
일반적인 경우는 개체를 과도하게 해제하고 어떤 개체를 모르는 경우입니다.
-[UITableView release]: message sent to deallocated instance
이 Xcode 설정은 App Store 제출을 위해 애플리케이션을 아카이브 할 때 무시됩니다. 응용 프로그램을 해제하기 전에 아무것도 만질 필요가 없습니다.
누르면 ⌥⌘R지키는 동안 제품> [실행]을 선택하는 것과 동일 Alt키 것은 눌렀습니다.
"좀비 개체 사용"확인란을 클릭하는 것은 인수 탭의 "환경 변수"섹션에서 "NSZombieEnabled = YES"를 수동으로 추가하는 것과 같습니다.
CMD-<
( CMD-SHIFT-comma
) 또는Product -> Scheme -> Edit SCheme...
이 대안이 더 편리하다는 것을 알았습니다.
Profile
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의 진단 탭을 사용할 때의 장점 :
진단 탭에서 옵션을 선택 취소하는 것을 잊어 버린 경우 메모리에서 객체가 해제되지 않습니다.
손상된 객체가 어떤 방법으로 할당 / 릴리스 또는 유지되는지를 보여주는 더 자세한 스택을 얻을 수 있습니다.
iOS Simulator > All
메인 템플릿 목록에서 선택했는지 확인하십시오 (시뮬레이터에서만 가능)
또는 > 메뉴 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 설정을 설명하는 이 비디오 를보십시오.