我有NSDictionary
需要存储特定x / y坐标的对象。因为这适用于iOS(同时使用cocos2d和box2d),我必须处理存储为CGPoint
或b2Vec2
的不同坐标集 - 但我需要能够正确使用的东西作为字典的关键。
我见过的一个例子是将坐标合并为一个NSString
,但这对我来说似乎效率很低。我把它作为一种临时措施,当然,我看到了糟糕的表现。
NSString *coordKey = [NSString stringWithFormat:@"%f%f", coord.x, coord.y];
我可以编写自定义NSCopying
对象来保存坐标,但我想知道这是否真的是最好的方式...
b2Vec2
坐标格式,我已经有了一些数据吗?答案 0 :(得分:0)
如果您定义一个包含float32 x, y
的坐标类,实现NSCopying
协议并实现良好的hash
方法,我希望它能够正常工作。
但是,只有在完全相同的(x,y)坐标查询时,此哈希表才会检索对象。依赖于浮点相等并不是一种好的做法,尽管如果查找键来自枚举已知值的列表而不是进行一些计算,它可能会起作用。
考虑使用quadtree。这是一棵树,通过递归细分为4个象限来组织其内容。