Re: Right place to unobserve notifications in a document
Re: Right place to unobserve notifications in a document
- Subject: Re: Right place to unobserve notifications in a document
- From: Negm-Awad Amin <email@hidden>
- Date: Wed, 20 Aug 2008 17:12:49 +0200
Am Mi,20.08.2008 um 16:58 schrieb Joan Lluch (casa):
Joan Lluch
El 20/08/2008, a las 16:05, Negm-Awad Amin escribió:
Am Mi,20.08.2008 um 15:37 schrieb Joan Lluch (casa):
I've been reading this thread and I don't understand it in the
case of GC. Why don't you still have to remove the observer from
the notification center when you are not longer using it. Even if
it is held as a weak reference, it will still remain registered
for receiving notifications, so what when the observer is
eventually collected, won't the notification center continue
sending messages to the observer as long as it remains registered
to receive them?, Please clarify.
First I want to say, that I'm happy to have a thread on this list,
which is not related to a concrete problem, but discusses a design.
I like that. :-)
Second: As you read, *I* would prefer to unregister the observer
explicitly. You can do this in -finalize, but I do not have to
repeat the design problems with finalization. *I* wanted a delegate
method or a defined method to be overwritten in a subclass (I
mentioned -close) to do it explicitly, *before* destroying the
object. You ask the wrong person …
Third, to your question: Weak references in GC – they have nothing
to do with "retainless" weak references using RC – are nullified
automatically. If you use GC the weak collection should be modified
appropiate by the collector itself. So this might be no problem. (I
didn't test it, because it is not my idea.)
I understand what is your preferred approach, which it is also what
I would do. I can add to it that I even thought that you *have to*
*always* unregister the observers when you have done with them. This
is obviously true in RC environment, but this is apparently not true
in the case of GC. This is the part I don't get. I would appreciate
if someone would clarify it for me.
Apple can clarify. Of course I do not know, which collection they use,
but as a prototype:
http://developer.apple.com/documentation/Cocoa/Reference/NSMapTable_class/Reference/NSMapTable.html
It can hold weak references to its keys and/or values.
Keys and/or values held "weakly" in a manner that entries are removed
when one of the objects is collected under garbage collection.
If you are not using garbage collection, you must explicitly remove
entries as you would from a dictionary. In addition to being held
weakly, keys or values may be copied on input or may use pointer
identity for equality and hashing.
As I said: Weak collections are modified automatically, if a member is
collected.
If the notification center handles the notification observers in a
collection (probably they will do), the observer is automatically
removed when collected.
Cheers,
Amin
Joan Lluch
Amin Negm-Awad
email@hidden
_______________________________________________
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