class && metaClass

大家都用这个图我也用这个图吧


class-diagram.jpg

Aclass *aclass = [[Aclass alloc] init];
Class cls = object_getClass(aclass); //Aclass(Class)
const char *Aclass1 = class_getName(cls); //"Aclass"
NSLog(@"1=:%s",Aclass1);
BOOL f1 = class_isMetaClass(cls); //NO
NSLog(@"f1=:%d",f1);

Class meta = object_getClass(cls); //Aclass(meta-class)
const char *Aclass2 =class_getName(meta);               //"Aclass"
NSLog(@"2=%s",Aclass2);
BOOL f2 = class_isMetaClass(meta);            //YES
NSLog(@"f2=:%d",f2);

Class meta_meta = object_getClass(meta); //NSObject(meta-class)
const char *Aclass3 = class_getName(meta_meta);//"NSObject"
NSLog(@"3=:%s",Aclass3);
BOOL f3 =  class_isMetaClass(meta_meta);//YES
NSLog(@"f3=:%d",f3);

打印信息
1=:Aclass
f1=:0
2=Aclass
f2=:1
3=:NSObject
f3=:1

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 转至元数据结尾创建: 董潇伟,最新修改于: 十二月 23, 2016 转至元数据起始第一章:isa和Class一....
    40c0490e5268阅读 5,890评论 0 9
  • 我们常常会听说 Objective-C 是一门动态语言,那么这个「动态」表现在哪呢?我想最主要的表现就是 Obje...
    Ethan_Struggle阅读 6,621评论 0 7
  • 原文出处:南峰子的技术博客 Objective-C语言是一门动态语言,它将很多静态语言在编译和链接时期做的事放到了...
    _烩面_阅读 5,086评论 1 5
  • Objective-C语言是一门动态语言,它将很多静态语言在编译和链接时期做的事放到了运行时来处理。这种动态语言的...
    有一种再见叫青春阅读 3,790评论 0 3
  • Objective-C语言是一门动态语言,他将很多静态语言在编译和链接时期做的事情放到了运行时来处理。这种动态语言...
    tigger丨阅读 5,356评论 0 8

友情链接更多精彩内容