2012-02-11 107 views
2

可可对象是 meta 类对象。据我所知,这实际上是Objective-C类,但没有规范。 那么如何检查两个类对象之间的相等性?如何检查一个类(元类对象)对象是否与另一个类对象相等

Class a = [@"" class]; 
Class b = [[NSObject alloc] init] class]; 

BOOL c = (a == b); // Is this right? 
+1

只要是明确的,在'class'方法返回一个类,而不是一元类。 – jlehr 2012-02-11 17:15:48

+0

@jlehr我在代码中发现了严重错误。谢谢。 – Eonil 2012-02-12 03:52:41

+0

可能重复的[如何确定类B是否是类A的子类?](http://stackoverflow.com/questions/7282249/how-to-determine-whether-class-b-is-a-subclass- a) – Eonil 2014-05-27 11:12:55

回答

4

madmik3是正确的。用你上面的例子,如果你测试了[a isKindOfClass:[b class]],它会测试YES,因为NSString从NSObject继承。

如果你想测试确切的类相等性,你可以使用isMemberOfClass:,它不包括继承。在你的例子中[a isMemberOfClass:[b class]]将被测试为NO,因为NSString是与NSObject不同的类。

根据我的经验,通常使用类方法进行测试,例如, [aMemberOfClass:[NSString类]]。

享受,

达明