gpt4 book ai didi

objective-c - 如何为 NSDictionary 实现自定义键

转载 作者:搜寻专家 更新时间:2023-10-30 20:00:24 24 4
gpt4 key购买 nike

我正在尝试实现一个用作 NSDictionary 中的键的类。文档说,为了用作键,对象需要实现 NSCopying 协议(protocol),我已经做到了。

我看到了一些非常奇怪的行为,即使我可以看到对象被正确存储在字典中,值似乎神秘地变成了 nil。

据我所知,我已经正确地实现了 copyWithZone: 和 isEqual:,但它仍然无法正常工作。

最佳答案

文档没有明确说明的是,要将对象用作 NSDictionary 中的键,它必须覆盖 isEqual: 和 hash 方法,以及实现 NSCopying。

isEqual: 和 hash 的约定是,如果 isEqual: 对 2 个对象返回 YES,那么它们的 hash 方法必须返回相同的值。 2 个不相等的对象具有相同的哈希值是可以的,但如果它们相等,则它们必须具有相同的哈希值。

当您尝试从字典中读写时,未能正确覆盖哈希将导致各种难以调试的问题。

关于objective-c - 如何为 NSDictionary 实现自定义键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14728921/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com