哪个更快:“-isKindOfClass:”或“-isEqualToString:”?

What is faster: '-isKindOfClass:' or '-isEqualToString:'?

我正在用 SpriteKit 制作游戏,想知道触摸的节点是否是我要查找的特定节点。哪个会更快,为该自定义 class 的所有节点提供一个 NSString 名称并使用 -isEqualToString: 检查它或使用 -isKindOfClass: 检查特定的 class?

虽然我从未使用过 SpriteKit,但从游戏的角度来看 development/performance 字符串比较效率非常低。一种更快的方法是存储散列字符串并与它进行比较,这只是一个整数比较。

我希望这有助于您决定什么是最适合您的。

Class 比较几乎肯定是这两个选项的 cheaper/more 效率。字符串比较很昂贵,因为字符串的大小需要灵活性(此外,NSString 是一个簇,相同的字符串可能会根据它的初始化方式用替代数据表示来表示),其中 'class' 是一种已知类型的固定内存足迹。