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>
>
>
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 mails | Author | Date |
|---|---|---|
| Casey Fleser | Dec 20, 20:10 | |
| Vince DeMarco | Dec 20, 20:13 | |
| Casey Fleser | Dec 20, 20:39 | |
| Ricky Sharp | Dec 20, 23:36 | |
| Vince DeMarco | Dec 21, 00:27 | |
| Casey Fleser | Dec 21, 16:17 |






Cocoa mail archive

