我使用NSMutableDictionary作为哈希表。我通过执行一些整数操作生成我的哈希键,因此最终生成的哈希键是一个整数。
我知道很容易将整数键转换为NSString,以便将其用作我的NSMutableDictionary的键。我可以通过使用[NSString stringWithFormat ...];来实现。但问题是该方法中包含的隐式转换(stringWithFormat ...)对于我正在做的事情来说计算过于昂贵。这种方法会减慢我的所有应用程序。
你知道解决这个问题吗?
就像使用整数作为我的哈希表的关键字一样?或者将整数转换为NSStrings的有效方法?
谢谢!
答案 0 :(得分:1)
我想你想要使用一个字符串,因为你认为,你必须这样做。确实,您不能使用NSInteger
之类的标量类型,但您可以使用符合NSCopying
的类的每个对象。
因此,您可以将整数转换为NSNumber
的实例,并将其用作关键字。
id value = …
NSInteger hash = …
NSDictionary *dictionary = …;
[dictionary setObject:… forKey:@(hash)];
…
value = [dictionary objectForKey:@(hash)];
我很确定这会更快。 (内部有一些"脏黑客和#34;用于快速生成整数。)
此外,将对象复制到NSDictionary
可能会很慢。您可以使用NSMapTable
,配置为不复制,而不是
编辑使用NSDictionary的访问方法。
通常,密钥可以是任何对象(前提是它符合 NSCopying协议 - 见下文),但请注意使用键值时 编码密钥必须是一个字符串(参见键值编码基础知识)。
答案 1 :(得分:0)
试试这个
int a = 35;
NSString* string = [@(a) stringValue];