2010-06-08 79 views

回答

0

您可能会对这种情况下的散列意味着什么感到困惑。散列只是Cocoa集合类在内部用来提高性能的一个数字。 NSObject实现了这个方法,所以你不必覆盖它,除非在比较/搜索数组或字典中的对象时,更好,更有意义的散列算法可以提高性能。

由于没有对象应该在磁盘上缓存它们的哈希值,所以评论意味着您不应该依赖Apple类返回的具体哈希值。它被认为是一个次要实施细节。

NSDictionary保留其值,但复制密钥。所以你不需要做任何事情来将你的视图作为值保存在字典中,但是如果你想使用视图作为键,你必须实现-copyWithZone:方法。

了解更多Apple文档。

+0

是的,我没有在原始问题中指定,但我确实希望将视图用作键。基本上,我试图保留一堆关于几种不同类型视图的元数据,并且我需要能够查找给定对象的元数据。你是说我必须继承并重载copyWithZone:方法才能做到这一点?没有其他办法吗? – 2010-06-08 20:11:30

+0

@Daniel Weber:如果你想使用NSDictionary,是的,你必须接受NSDictionary的行为。不过,我认为一个更好的问题就是为什么你要保留关于视图的元数据。通常在这种情况下,视图将代表模型对象,并且将元数据存储在模型层中会更有意义。 – Chuck 2010-06-08 20:23:27

+0

是的,当你这样说时,它似乎没有道理。但是,我正在使用Interface Builder类型的程序,并且使用了许多不同的标准控件(按钮,文本框等)。当我在程序中点击某个人时,我需要能够访问关于该控件的一些自定义属性。我试图避免继承所有的东西,因为我真正需要的是一些额外的字符串和int属性,我没有重新定义任何行为。亚类真的是最好的方法吗? – 2010-06-08 20:33:26

相关问题