cfi*_*her 2 cocoa objective-c nsdictionary nscopying
我注意到一个对象是一个NSDictionary必须符合的关键NSCopying.
为什么会这样?我会理解所有密钥都必须实现hash,但为什么NSCopying呢?
NSDictionary保证如果使用某个键存储值,则x此键已修复,您可以使用等效键y(y.isEqual(x) == YES)检索此值.这样做只有两种可能性:
Apple决定在大多数情况下应对密钥更好.
如果你需要一个字典没有复制密钥(例如密钥没有实现NSCopying或复制过于昂贵)你可以使用NSMapTable.例如,您可以使用
[NSMapTable strongToStrongObjectsMapTable]
Run Code Online (Sandbox Code Playgroud)
将键和值存储为强引用.
因为密钥是复制的.您不希望将密钥存储为对您开始使用的同一对象的引用,是吗?如果d[myThing] = myValue保留对可能可变实例的引用,那将是可怕的myThing.这意味着字典可能会在自己的背后变异.
| 归档时间: |
|
| 查看次数: |
1311 次 |
| 最近记录: |