美文网首页iOS面试题
iOS面试-runtime相关

iOS面试-runtime相关

作者: xxxxxxxx_123 | 来源:发表于2020-02-26 20:33 被阅读0次

    什么是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就是找函数的过程

    相关文章

      网友评论

        本文标题:iOS面试-runtime相关

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