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
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 mails | Author | Date |
|---|---|---|
| Todd Ditchendorf | Dec 22, 21:19 | |
| Sean McBride | Jan 3, 23:24 | |
| Bill Bumgarner | Jan 4, 00:10 |






Cocoa mail archive

