OC中有3种对象,分别是1.实例对象,2.类对象,3.元类对象

1.instance(实例对象)


里面存放isa以及具体的值.isa地址就是这个对象的地址.


2. class(类对象)

在这里插入图片描述

属性信息 :


3.meta-class(元类对象)

在这里插入图片描述


4.注意

以下代码获取objcetClass是class对象,并不是meta-class对象

Class objectClass = [[NSObject class] class];
//获取的一直是类对象.
  • -(Class)class、+(Class)class;

返回的就是类对象

- (Class) {
    return self->isa;
}

+ (Class) {
    return self;
}

5. objc_getClass & object_getclass

  1. Class objc_getClass(const char *aClassName)
  1. 传入字符串类名
  2. 返回对应的类对象
// objc_getClass(<#const char * _Nonnull name#>)

//  NSString *className = @"MyClassName";
//  Class myClass = objc_getClass(className.UTF8String);

Class className1 = objc_getClass("NSObject");
NSLog(@"%@ -- %@ -- %@",className1,[NSObject class],object_getClass([NSObject class]));
// NSObject -- NSObject -- NSObject
  1. Class object_getClass(id obj)

1.传入的obj可能instance对象,class对象,meta-class对象
2.返回值
a. 如果是instance对象,返回class对象
b. 如果是class,返回meta-class对象
c. 如果是meta-class对象,返回NSObject(基类)的meta-class对象

原文地址:https://blog.csdn.net/squallmouse/article/details/123044656

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任

如若转载,请注明出处:http://www.7code.cn/show_44660.html

如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱suwngjj01@126.com进行投诉反馈,一经查实,立即删除

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注