Я создаю UIActionSheet с текстами кнопок из файла txts. После того, как я установил для NSZombieEnabled, NSDebuEnabled значение YES и для NSDeallocateZombies значение NO, я получаю точку останова с сообщением:
*** -[CFString isEqual:]: сообщение отправлено освобожденному экземпляру 0x11fae00
Это происходит после показа 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 для того же текста.