Skip navigation.
 
mlRe: NSSpeechSynthesizer leaking
FROM : Casey Fleser
DATE : Tue Dec 20 20:39:39 2005

Hmm? In speechSynthesizer: didFinishSpeaking: it says: [inSender 
release].

BTW, I also tried creating an autoreleased version of 
NSSpeechSynthesizer instead of releasing via the delegate message. 
Either way though the NSSpeechSynthesizer will get dealloc'd, but not 
clean up after itself properly.

I will probably work around this by creating a single 
NSSpeechSynthesizer and reusing it as needed, but I shouldn't have to.

Casey

On Dec 20, 2005, at 1:13 PM, Vince DeMarco wrote:

>
> in speachSynthesizer:didFinishSpeaking: you are retaining the inSender
>
> which seems wrong, and will cause a leak.
>
>
> On Dec 20, 2005, at 11:10 AM, Casey Fleser wrote:
>

>> I just need a quick sanity check to make sure I'm not seeing 
>> something obvious here before I submit this to Radar. Looks to me 
>> that NSSpeechSynthesizer isn't cleaning up after itself properly.
>>
>> Just a quick and simple action to that grabs some text from an 
>> NSTextField. I subclassed NSSpeechSynthesizer 
>> (DebugSpeechSynthesizer) so I could NSLog from retain, release, 
>> and dealloc. DebugSpeechSynthesizer is getting dealloc'd, but 
>> there are huge chunks of memory that are not being reclaimed (the 
>> main culprits seem to live in MacinTalk  AudioToolbox according to 
>> ObjectAlloc).
>>
>> So anyway, am I missing something here? (for the record 
>> DebugSpeechSynthesizer does call [super dealloc]). Clicking the 
>> speak button repeatedly in my little sample app will consume 
>> hundreds of megabytes of memory pretty quickly.
>>
>> - (IBAction) speak: (id) inSender
>> {
>>     NSSpeechSynthesizer        *synthesizer =
>>         [[DebugSpeechSynthesizer alloc] initWithVoice:
>>         [NSSpeechSynthesizer defaultVoice]];
>>     
>>     if (synthesizer != nil) {
>>         [synthesizer setDelegate: self];
>>         [synthesizer startSpeakingString: [_speechText stringValue]];
>>     }
>> }
>>
>> - (void) speechSynthesizer: (NSSpeechSynthesizer *) inSender
>>     didFinishSpeaking: (BOOL) inFinishedSpeaking
>> {
>>     NSLog(@"NSSpeechSynthesizer %@ finished", inSender);
>>     
>>     [inSender release];
>> }
>>
>> The demonstration app can be grabbed here if you like:
>>
>> http://www.somegeekintn.com/download/SpeechTest.zip
>>
>> Thanks for any insight,
>>
>> Casey
>>
>> _______________________________________________
>> Do not post admin requests to the list. They will be ignored.
>> Cocoa-dev mailing list      (<email_removed>)
>> Help/Unsubscribe/Update your Subscription:
>> http://lists.apple.com/mailman/options/cocoa-dev/<email_removed>
>>
>> This email sent to <email_removed>

>
>

Related mailsAuthorDate
mlNSSpeechSynthesizer leaking Casey Fleser Dec 20, 20:10
mlRe: NSSpeechSynthesizer leaking Vince DeMarco Dec 20, 20:13
mlRe: NSSpeechSynthesizer leaking Casey Fleser Dec 20, 20:39
mlRe: NSSpeechSynthesizer leaking Ricky Sharp Dec 20, 23:36
mlRe: NSSpeechSynthesizer leaking Vince DeMarco Dec 21, 00:27
mlRe: NSSpeechSynthesizer leaking Casey Fleser Dec 21, 16:17