On Aug 15, 2011, at 15:05:56, Evan Schoenberg wrote:
> Yeah, it's weird that IRC has no truly consistent identifier for a contact 
> but rather relies on the nick...

There are a couple of options, each with its own problem.

username@hostname is not changeable except by disconnection and reconnection, 
but multiple connections to the server can have the same u@h (with different 
nicknames).

nickname!username@hostname is unique, but can be changed at will.

> Maybe this would be a good case for a variable to do key-value-observer 
> notifications on (rather than making up a brand new notification name)?

It might be worth making some kind of augmented dictionary that can automate 
this:

- Adding an object is done not with `setObject:forKey:`, but with `addObject:`, 
as with a set.
- The dictionary gets the object's `internalObjectID` (or whatever; this could 
even be set by the object by having it implement a property that returns the 
correct KVC key) and stores the object under that key.
- The dictionary also observes the object's `internalObjectID`, reassociating 
the object automatically when the ID changes.
- When the object is removed (with `removeObject:`), the dictionary stops 
observing the `internalObjectID`, gets it one last time, and removes it with 
`removeObjectForKey:`.


Reply via email to