Is an NSMapTable the same as an NSMutableDictionary except for allowing keys to be pointers?
Does it differ in memory management?
The main difference between NSMapTable and NSMutableDictionary is that NSMapTable stores weak pointers. This means that when you call smth like this:
[my_table setValue: val forKey: key];
the value and key are not retained (it means no retain message is sent to them). That's why you can use any object (or maybe not object but any pointer) cause they don't have to respond to retain message.
So you probably want to use NSMapTable if you're using garbage collection where you don't need to bother about retain count of an object.