Re: NSMapTable with C strings as keys
Re: NSMapTable with C strings as keys
- Subject: Re: NSMapTable with C strings as keys
- From: Oleg Krupnov <email@hidden>
- Date: Tue, 28 May 2013 09:25:41 +0300
Hi Jens,
I guess you may be right. But… two questions in this regard:
1. I thought that "isEqual" method is alternative to "hash" method,
because searching by key and searching by hash are two mutually
exclusive methods of looking up values, aren't they?
2. What hash function you'd suggest in my case, that would calculate
unsigned int on output, for C strings? Because calculating hash
functions (such as md5) may be computationally expensive, which could
undermine my entire idea of sparing extra few calls on creating
NSStrings :)
Thanks!
On Tue, May 28, 2013 at 9:08 AM, Jens Alfke <email@hidden> wrote:
>
> On May 27, 2013, at 10:46 PM, Oleg Krupnov <email@hidden> wrote:
>
> Now, the problem is that sometimes when I try to get a value from the
> table, the MapTableKeyComparator function is not called at all, and
> NSMapGet returns NULL, thought immediate dump of the table shows that
> all previous records are perfectly present in the table.
>
>
> Probably because you haven’t implemented a hash function, only an equals
> function. I’m guessing NSMapTable’s default hash function merely hashes the
> key pointer itself, which means that if you pass it a different pointer to
> an equal C string, it won’t find anything.
>
> —Jens
>
_______________________________________________
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