【发布时间】:2011-06-22 20:03:39
【问题描述】:
我想创建一个不复制其键(仅保留)的自定义字典。
在内部,我计划使用带有特殊 Pair 对象的 NSMutableArray,其中 pair 的第一个对象是键,第二个是值。
键都是唯一的。
为了快速检索键上的对象,我会使用二进制搜索算法 - 所以数组应该在对的第一个对象的内存地址上进行排序(注意!)。
(顺便说一句,这就是为什么我拒绝将 CFDictionaryRef 与一组特殊的回调一起使用 - 我怀疑它会降级到 O(n),以防无法提供合理的哈希)
这是一个坏主意吗,假设:
- 用作键的对象可能会在内部发生变化(也就是说,我不能使用
isEqual:代替地址比较); - 用作键的对象不会被释放(这是合理的 - 它们由特殊的 Pair 对象保留,而 Pair 由内部 NSArray 保留)。
为什么不好(或好)?
如何从指针中获取内存地址?只需将其转换为 long long int 或类似的吗?
谢谢!
【问题讨论】:
-
"如何从指针中获取内存地址?"一个指针值是一个内存地址...
-
我知道它在内部是:) 但我一直认为我不能直接用 比较指针值。
标签: objective-c memory pointers nsdictionary