Re: use finalize for removing AppleEvent handlers in GC apps?
Re: use finalize for removing AppleEvent handlers in GC apps?
- Subject: Re: use finalize for removing AppleEvent handlers in GC apps?
- From: Bill Bumgarner <email@hidden>
- Date: Thu, 3 Jan 2008 15:10:00 -0800
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
_______________________________________________
Cocoa-dev mailing list (email@hidden)
Please do not post admin requests or moderator comments to the list.
Contact the moderators at cocoa-dev-admins(at)lists.apple.com
Help/Unsubscribe/Update your Subscription:
This email sent to email@hidden