MacOS - isKindOfClass 和 isMemberOfClass 的区别


两者都是NSObject用于比较Class的方法
不同点在于:

1、isKindOfClass可用于判断对象是否是某一个类的实例化对象,或者是该派生类的实例化对象
2、isMemberOfClass可用于判断对象是否是当前类的实例化对象

举例:

以下代码会返回 YES。因为 in Foundation, the NSArchiver class inherits from NSCoder

if ( [anArchiver isKindOfClass:[NSCoder class]] )

以下代码会返回 NO。

if ([anArchiver isMemberOfClass:[NSCoder class]])

Tips :NSArray、NSMutableArray属于类簇,使用isKindOfClass不能得到正确的结果
原因:由于类簇的性质,这类对象实际返回的实例有不确定性。