이 오류 메시지가 나타납니다.진단 오류 : "해제 된 개체로 보내진 릴리스"
message [CFString release] sent to deallocated object at 0x........
이 문제의 원인이 된 문자열을 어떻게 알 수 있습니까? 디버거를 사용중인 CFString
을 알아낼 수 있습니까?
이 오류 메시지가 나타납니다.진단 오류 : "해제 된 개체로 보내진 릴리스"
message [CFString release] sent to deallocated object at 0x........
이 문제의 원인이 된 문자열을 어떻게 알 수 있습니까? 디버거를 사용중인 CFString
을 알아낼 수 있습니까?
Xcode 4를 사용하는 경우 좀비 도구 (빌드 및 프로파일)를 사용하십시오. 이 메시지가 나타나면 화살표를 눌러 문자열이 유지되고 해제 된 모든 곳의 목록을 가져올 수 있습니다.
http://www.cocoadev.com/index.pl?NSZombieEnabled을 참조하십시오. 중단 점을 넣고 스택을 조사하여 발생한 릴리스 문을 찾으십시오.
firts에서는 alloc/dealloc 함수에 대한 코드를 찾아보고 계산할 수 있습니다.
"count alloc == count dealloc"입니다.
NSString *myString = [NSString stringWith...]; // Auto alloc/init with content
[myString release]; // Release before use
NSLog(@"%@", myString); // Use after release
를 또는 정말 많은 도움이다 NSLog(%"retain count :%d", [myString retainCount]);
보유 카운트를 사용하여 디버그하지 마십시오. 유용한 정보는 없습니다. http://stackoverflow.com/questions/4636146/when-to-use-retaincount. –
또한 Instrument에서 프로그램을 테스트하여 메모리 누수를 확인하고 어디에서 가져 왔는지 확인하십시오. :) – iTux
장비에 들으 디버그를 시도 :
두 번째 단계, 일부 건설 봐! – CarmeloS