美文网首页
iOS runtime(一)数据结构和元类

iOS runtime(一)数据结构和元类

作者: Nomo_C | 来源:发表于2018-03-09 20:46 被阅读0次

Runtime全方位装逼指南

Runtime系列(浅析数据结构)

数据结构

Class:结构体objc_class的指针

id:结构体objc_object的指针。objc_object中的isa指向元类

SEL:它是映射到方法的字符串,可以使用Objctive-C的编译器命令@selector或者Runtime的sel_registerName函数获得一个SEL类型的方法选择器。需要注意的是只要方法名相同,SEL就相同,所以下面这种情况编译器会报错:

- (int)helloworld:(int)flag;

- (float)helloworld:(float)flag;

IMP:函数指针

objc_class

isa:指向元类

super_class:当前类的父类

name:类名

version:版本信息

info:提供运行期使用的标示符

instance_size:当前类实例对象大小(包含父类)

ivars:成员变量列表

methodLists:指向该类实例方法列表,将方法选择器和方法实现地址联系起来。methodLists是指向objc_method_list指针的指针,也就是说可以动态修改*methodLists的值来添加成员方法,这也是category的实现原理,同样解释了category不能添加变量的原因。

cache:Runtime 系统会把调用的方法存储到cache,下次查找的时候效率更高。

protocols:指向该类的协议列表

类与元类

isa表示:实例对象的类是类对象,类对象的类是元类对象,元类对象的类是根元类(isa指向自己)。

类对象的父类最终都继承自根类对象NSObject,NSObject的父类是nil

元类对象(包括根元类)的父类最终继承自根类对象NSObject

相关文章

  • iOS runtime(一)数据结构和元类

    Runtime全方位装逼指南Runtime系列(浅析数据结构) 数据结构 Class:结构体objc_class的...

  • 一、OC对象模型

    iOS runtime 之 Class 和 MetaClass首先,对象、类和元类的概念,看下面的图和代码可以了解...

  • iOS - Runtime基础

    Runtime合集iOS - isa、superclass指针,元类superclass指向基类本身[https:...

  • iOS面试之Runtime大全

    Runtime内容如下: 数据结构 类对象与元类对象 消息传递 方法缓存 消息转发 Method-Swizzlin...

  • iOS面试之Runtime模块

    Runtime内容如下: 数据结构 类对象与元类对象 消息传递 方法缓存 消息转发 Method-Swizzlin...

  • Runtime相关

    Runtime 数据结构 类对象与元类对象 消息传递 方法缓存 消息转发 Method-Swizzling 动态添...

  • Runtime

    主要内容:1 Runtime数据结构2 对象,类,元类之间关系3 消息传递4 消息转发5 常见问题 数据结构 ...

  • iOS Runtime ---- 元类

    从初学OC的时候就听人提起过OC对象中的isa指针,用来指向对象所属的类,从而可以在调用方法时通过isa指针找到相...

  • 彻底搞懂OC中的对象、类、元类概念

    前言 写过iOS的人都知道runtime这个概念,那么OC在面向对象里面的类和实例以及经常被提到的元类,这些到底和...

  • [iOS面试]第3章 RunTime相关面试问题

    本文主讲RunTime相关面试问题,包括数据结构、类对象与元类对象、消息传递、方法缓存、消息转发、Method-S...

网友评论

      本文标题:iOS runtime(一)数据结构和元类

      本文链接:https://www.haomeiwen.com/subject/fjayfftx.html