2010-02-04 2 views
0

나는 txts 파일의 버튼 텍스트로 UIActionSheet를 생성합니다. [CFString ISEQUAL :] -NSLocalizedStringFromTable 충돌

*** : 메시지 할당이 해제 된 경우 0x11fae00

이를 보내 내가 NO를 YES와 NSDeallocateZombies에 NSZombieEnabled, NSDebuEnabled을 설정 한 후, 나는 메시지와 함께 브레이크 포인트를 얻을 수 즉시가 아니라 UIActionSheet를 세 번째 또는 네 번째에 표시 한 후에 발생합니다. 코드는 이런 일이 발생했다 :

UIActionSheet *actionSheet = [[UIActionSheet alloc] initWithTitle:NSLocalizedStringFromTable(@"text", @"class", @"text") 
                 delegate:self cancelButtonTitle:nil destructiveButtonTitle:nil 
                 otherButtonTitles:NSLocalizedStringFromTable(@"text1", @"class", @"text1"), 
                  NSLocalizedStringFromTable(@"text2", @"class", @"text2"), 
                  NSLocalizedStringFromTable(@"text3", @"class", @"text3"), nil]; 
[actionSheet showFromTabBar:self.tabBarController.tabBar]; 
[actionSheet release]; 

내가 NSDealocateZombies을 제거하면, 시뮬레이터에서 더 이상 충돌이없는,하지만 난 콘솔에 경고를 얻을 :

[CFString이 _cfTypeID] : 메시지로 전송 할당 취소 된 인스턴스

이러한 문제가 발생 했습니까? 리소스에서 문자열을 반복적으로 가져 오는 것이 잘못 되었습니까? 마지막 해결책으로 멤버 변수에 한 번 넣으려고 했으므로 동일한 텍스트에 대해 NSLocalizedStringFromTable에 대한 또 다른 호출을 피할 수 있습니다.

답변

0

결국 다른 곳에서 문제가 발견되었습니다. NSLocalizedStringFromTable을 통해 얻은 NSString은 나중에에 대한 유지가 없었지만 나중에 으로 릴리스되었습니다. 재미있는 부분은 완전히 다른 클래스의 시스템 프레임 워크에서 충돌이 발생했다는 것입니다. 결국 과다 방출이 원인이었습니다.