当前位置 : 主页 > 编程语言 > c++ >

在objective-c中,我如何区分Class和类的实例?

来源:互联网 收集:自由互联 发布时间:2021-06-23
假设我在 objective-c中有一个通用指针.该指针可以是Class对象,也可以是该类的实例.有什么办法可以分辨两者之间的区别吗? 例: id pointerA = [someClass class];id pointerB = [[someClass alloc] init];
假设我在 objective-c中有一个通用指针.该指针可以是Class对象,也可以是该类的实例.有什么办法可以分辨两者之间的区别吗?

例:

id pointerA = [someClass class];
id pointerB = [[someClass alloc] init];

bool pointerAIsAClass = is_this_a_Class(pointerA); // should be true
bool pointerBIsAClass = is_this_a_Class(pointerB); // should be false

我如何编写is_this_a_Class函数以便返回正确的bool值?

bool is_this_a_Class(id somePointer)
{
    // your code goes here
}
最正确的方法是检查对象的类,看看它是否是元类:

BOOL object_isClass(id object) {
    return class_isMetaClass(object_getClass(object));
}

这里有更多的答案:Check if object is Class type

网友评论