Я создаю 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 для того же текста.