Objective c 什么';在目标C中使用Iskindof类的性能损失是多少?

Objective c 什么';在目标C中使用Iskindof类的性能损失是多少?,objective-c,performance,Objective C,Performance,我正在考虑介绍: if ([myInstance isKindOfClass:[SomeClass class]]) { do something...} 变成一段经常被调用的代码。我会引入严重的性能惩罚吗?在Objective C中,是否有一种更快的方法来评估给定的对象实例是否属于特定的类类型?例如,以下是更快的吗?(我意识到测试有些不同) 查看两个对象是否属于同一类的最快方法是比较它们的isa指针。然而,这意味着当一个对象的类是另一个对象的类的子类时,您将错过,这正是isKindOfCla

我正在考虑介绍:

if ([myInstance isKindOfClass:[SomeClass class]]) { do something...}
变成一段经常被调用的代码。我会引入严重的性能惩罚吗?在Objective C中,是否有一种更快的方法来评估给定的对象实例是否属于特定的类类型?例如,以下是更快的吗?(我意识到测试有些不同)


查看两个对象是否属于同一类的最快方法是比较它们的
isa
指针。然而,这意味着当一个对象的类是另一个对象的类的子类时,您将错过,这正是
isKindOfClass:
的目的

无论如何,您所说的优化已经在这里完成了:


您的评测结果告诉了您什么?我还没有做任何评测;这是我的下一步。在开始盲性能测试之前,我希望找到一些文档来解释Objective C中类的潜在魔力。然而,我还没有找到任何东西,所以我接下来将尝试不同的排列。关于如何识别给定实例的类类型,有什么建议吗?没有盲目的性能测试。。。只有盲目优化!此外,每次调用方法时,Obj-C运行时都会根据对象的类来决定调用哪个方法,因此可以通过将{do something…}放在感兴趣的类的方法中来充分利用这一点。我不同意。如果你至少对下面发生的事情有一个线索,你的测试就会更加有效。一、 不幸的是,不要这样做。另外,codewarrior,虽然您对类型多态性的观察通常是正确的,但它不适用于我的情况。我缓存一个经常调用的方法列表的方法指针,当我的列表包含多个类型的实例时,我需要刷新这些指针。不用说,我现在在玩一些数字。感谢您的评论。Obj-C运行时为您缓存最常用的方法指针。读这个:这正是我想要的信息类型。谢谢你给我指出了这个方向。有人告诉我,苹果不希望你再直接使用
isa
指针。问题中
==
的等式检查更等同于
isMemberOfClass:
,它不考虑子类。
if (myInstance.class == [SomeClass class]) { do something else...}