iOS面试-runtime相关

什么是runtime?

runtime 一套c/c++、汇编形成的API,为Objective-C提供运行时功能。能够将数据类型的确定由编译期推迟到运行时。

ro: read-only在编译期就确定
rw: read-write在运行时确定

如:extensioncategory的区别
extension在编译期就作为类的一部分直接编译,数据就已经写入ro

方法的本质是什么?

方法的本质是发送消息。发送消息有以下几个流程:

  • 快速查找(objc_msgSend),从缓存(cache_t)中查找
  • 慢速查找,递归self、superlookUpImpOrForward
  • 找不到方法,动态方法解析
+ (BOOL)resolveInstanceMethod:(SEL)sel
+ (BOOL)resolveClassMethod:(SEL)sel
  • 消息转发
- (id)forwardingTargetForSelector:(SEL)aSelector
  • 消息签名、分发
- (NSMethodSignature *)methodSignatureForSelector:(SEL)aSelector
- (void)forwardInvocation:(NSInvocation *)anInvocation

SEL是什么?IMP是什么?两者有什么联系?

SEL是方法编号,即方法名称,在dyld加载镜像时,通过read_image方法加载到内存的表中了

IMP 是函数实现指针,找IMP就是找函数的过程

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

相关阅读更多精彩内容

  • 本文转载自:http://yulingtianxia.com/blog/2014/11/05/objective-...
    ant_flex阅读 892评论 0 1
  • 我们常常会听说 Objective-C 是一门动态语言,那么这个「动态」表现在哪呢?我想最主要的表现就是 Obje...
    Ethan_Struggle阅读 2,351评论 0 7
  • 前言 Runtime是什么 Runtime的实现原理消息传递机制Runtime基础数据结构NSObject & i...
    Supremodeamor阅读 594评论 0 1
  • 本文详细整理了 Cocoa 的 Runtime 系统的知识,它使得 Objective-C 如虎添翼,具备了灵活的...
    lylaut阅读 869评论 0 4
  • 面向对象的三大特性:封装、继承、多态 OC内存管理 _strong 引用计数器来控制对象的生命周期。 _weak...
    运气不够技术凑阅读 1,230评论 0 10

友情链接更多精彩内容