检查两个类对象是否相等
我们可以直接比较指针是否相等来检查两个类对象是否相等。重要的一点是获取正确的类。Cocoa 框架中提供了好几种特性可以动态地,透明地对即存的类进行派生,以便扩展他们的功能(例如,key-value Observing (KVO,关键字-值与观察机制)以及Core Data(核心数据)都会这么做。更多信息请分别参阅《Key-Value Obeserving 编程指南》和《Core Data编程指南》)。在这种情况下,class方法通常都会被重写,以便伪装成被他们所替代的类。因此当我们需要检测类对象是否相等的时候,我们应该使用class方法反悔的对象,而不是使用那些底层的函数。从API的层面来说,针对这种动态派生来将,下面的三项是不相等的:
[object class] != object_getClass(object) != *((Class *)object);
我们应该使用类似于下面的代码来检测两个类对象是否相等:
if ( [objectA class] ==[objectB class] )
{
//...
}