2016-11-16 44 views
0
if ([aClass class] == [bClass class]) { 

} 

可以使用==或!=来比较[aClass类]和[bClass类]吗?

if ([[aClass class] isEqual:[bClass class]]) { 

} 
如果不是

,为什么呢?

+0

也看这里:http://stackoverflow.com/questions/16424298/why-is-class-nsclassfromstringnsstringfromclass-class-on-os-x – plu

+1

那些结构 您可以使用,如果([someObject isKindOfClass:[NSManagedObject class]]){} –

+0

@DevanshuSaini你不想在这里使用'isKindOfClass'。 'isMemberOfClass'会更好。 – rmaddy

回答

0

您可以使用isMemberOfClass同时检查对象属于同一类这样

if ([aClas isMemberOfClass:class] && [bClas isMemberOfClass:class]) { 

} 
+0

这是不正确的。 'isKindOfClass'检查接收方是否是类的实例或从类继承的任何类的实例。 – rmaddy

+0

你们俩都是对的:-)。例如,考虑实际类不是NSString而是__NSCFString的情况。从开发人员的角度来看,他们是一样的。但从技术上讲,它们属于不同的类别。 –

+0

@ВладимирВодолазкий这不是我所指的例子。假设'aClas'是'UIView','bClas'是'UIControl'。最后'class'是'UIResponder'。这个答案中的'if'陈述将是真实的,但显然'aClas'和'bClas'不一样。 – rmaddy

0

是,类对象总是可以用物理平等(==!=)进行比较。每个类总会有一个类对象。两个不同的类对象永远不会“平等”。

相关问题