Я пишу приложение в соответствии с книгой по программированию какао Аарона Хиллегаса (глава 6).
Приложение показывает доступные голоса синтезатора речи.
Ниже приведены методы init и делегата для табличного представления:
- (id)init
{
[super init];
NSLog(@"init");
speechSynth = [[NSSpeechSynthesizer alloc] init];
[speechSynth setDelegate:self];
availableVoices = [[NSSpeechSynthesizer availableVoices] retain];
return self;
}
- (id)tableView:(NSTableView *)aTableView objectValueForTableColumn:(NSTableColumn*)aTableColumn row:(NSInteger)rowIndex
{
NSString * aVoice = [availableVoices objectAtIndex:rowIndex];
NSDictionary *voiceDict = [NSSpeechSynthesizer attributesForVoice:aVoice];
return [voiceDict objectForKey:NSVoiceName];
}
У меня есть вопрос 1 об этой строке:
availableVoices = [[NSSpeechSynthesizer availableVoices] **retain**];
Зачем сохранять?Я попытался без сохранения, окно всплывает, но я перемещаю мышь на окне, программа перезапустилась:
(gdb) продолжение 2011-02-13 15: 57: 37.671 SpeakLine[4384: 80f] ** - [CFArray objectAtIndex:]: сообщение отправлено на освобожденный экземпляр 0x187e20 *
Вопрос 2:
Я отлаживаю эту программу, даже если я не сделалсохраняйте, можно использовать availableVoices, но отладчик Xcode показывает только девять содержимого, почему?Как можно посмотреть все содержимое массива?
Это снимок
Вопрос 3:
Почему программаразбился в середине срока не в начале?Когда было выпущено содержимое NSSpeechSynthesizer?