Skip navigation.
 
mlRe: use finalize for removing AppleEvent handlers in GC apps?
FROM : Bill Bumgarner
DATE : Fri Jan 04 00:10:00 2008

On Jan 3, 2008, at 2:24 PM, Sean McBride wrote:
>> It seems that before GC, you would remove this handler in the dalloc
>> method. (correct me if i'm wrong there)
>>
>> - (void)dealloc {
>>     ...
>>     [[NSAppleEventManager sharedAppleEventManager]
>> removeEventHandlerForEventClass:kInternetEventClass
>> andEventID:kAEGetURL];
>>     ...
>> }
>>
>> In a GC app, should you do that removal in finalize instead? or
>> somewhere else? or not at all?

>
> Well, everything in -finalize has to be thread-safe.  Is
> NSAppleEventManager thread safe?  If not, then -finalize is a very bad
> place to do that.


In general, -finalize is a very bad place to do anything but memory 
management.  And, given that GC does almost all memory management for 
you, that makes -finalize just a very bad place.  Order is undefined 
and the thread of execution may be random, too.

Work to remove all -finalize methods from your app.  Your codebase 
will be happier for it.

In particular, having some kind of an "I'm done with this subgraph, go 
tear down scarce or sensitive resources in an orderly fashion" 
notification will address this issue.

b.bum

Related mailsAuthorDate
mluse finalize for removing AppleEvent handlers in GC apps? Todd Ditchendorf Dec 22, 21:19
mlRe: use finalize for removing AppleEvent handlers in GC apps? Sean McBride Jan 3, 23:24
mlRe: use finalize for removing AppleEvent handlers in GC apps? Bill Bumgarner Jan 4, 00:10