Я прочитал почти каждый Вопрос здесь о SO, касающийся управления памятью, в котором используются строки NSStrings, но я не могу решить эту проблему.
@ интерфейс:
@property (nonatomic, retain) NSString *criticalTranscription;
@ реализация:
viewDidLoad:
criticalTranscription = [[NSString alloc] init];
NSArray *paragraphs = [doc valueForKeyPath:@"critical.text"];
for(int i = 0; i < [paragraphs count]; i++)
{
criticalTranscription = [criticalTranscription stringByAppendingString:[[paragraphs objectAtIndex:i] valueForKey:@"p"]];
criticalTranscription = [criticalTranscription stringByAppendingString:@"\n\n"];
}
[transcription setText:criticalTranscription];
@ XIB
UISegmentedControl с IBAction, связанным с:
- (IBAction) changeText:(id)sender
{
if(transcriptionSelector.selectedSegmentIndex == 1)
[transcription setText:diplomaticTranscription];
else
[transcription setText:criticalTranscription];
}
Когда я изменяю значение UISegmentControl (первым делом сразу после загрузки, больше ничего не запускается), я сталкиваюсь с этой ошибкой (NSZombieEnabled = YES):
2011-07-07 01:10:43.639 Transcribe[404:707] *** -[CFString length]: message sent to deallocated instance 0x1189300
Я не вижу ничего существенного в следе. Без NSZombieEnabled критическая транскрипция просто указывает на случайные массивы или что-то еще. Дальнейшее использование переменной или каких-либо выпусков невозможно.
Я провел анализ без каких-либо подозрительных утечек.
В чем проблема?