首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

iOS开发-Runtime详解

iOS开发-Runtime详解 简介 Runtime 又叫运行时,是一套底层的 C 语言 API,其为 iOS 内部的核心之一,我们平时编写的 OC 代码,底层都是基于它来实现的。...因此,编译器是不够的,我们还需要一个运行时系统(Runtime system)来处理编译后的代码。 Runtime 基本是用 C 和汇编写的,由此可见苹果为了动态系统的高效而做出的努力。...---- Runtime 的作用 Objc 在三种层面上与 Runtime 系统进行交互: 通过 Objective-C 源代码 通过 Foundation 框架的 NSObject 类定义的方法...通过对 Runtime 库函数的直接调用 Runtime 系统是具有公共接口的动态共享库。...---- 一些 Runtime 的术语的数据结构 要想全面了解 Runtime 机制,我们必须先了解 Runtime 的一些术语,他们都对应着数据结构。

73270
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    iOS开发-Runtime详解

    iOS开发-Runtime详解 简介 Runtime 又叫运行时,是一套底层的 C 语言 API,其为 iOS 内部的核心之一,我们平时编写的 OC 代码,底层都是基于它来实现的。...因此,编译器是不够的,我们还需要一个运行时系统(Runtime system)来处理编译后的代码。 Runtime 基本是用 C 和汇编写的,由此可见苹果为了动态系统的高效而做出的努力。...---- Runtime 的作用 Objc 在三种层面上与 Runtime 系统进行交互: 通过 Objective-C 源代码 通过 Foundation 框架的 NSObject 类定义的方法...通过对 Runtime 库函数的直接调用 Runtime 系统是具有公共接口的动态共享库。...---- 一些 Runtime 的术语的数据结构 要想全面了解 Runtime 机制,我们必须先了解 Runtime 的一些术语,他们都对应着数据结构。

    72990

    iOS RunTime之六:Category

    runtime.h中查看定义中: typedef struct objc_category *Category; 同样也是一个 objc_category 结构体,定义如下: struct objc_category...; } OBJC2_UNAVAILABLE; 打开 objc 源代码,在objc-runtime-new.h...cls:要扩展的类对象,编译期间是不会定义的,而是在Runtime阶段通过name对应到对应的类对象。 instanceMethods:category中所有给类添加的实例方法的列表。...Category的原理 想深入了解 Category 的原理,请查看苹果的源码,这里是 objc4-680/ 我们知道,Objective-C 的运行是依赖 runtime,而 runtime 则依赖于...Paste_Image.png Category 被附加到类上面是在 map_images 的时候发生的,在 new-ABI 的标准下,_objc_init 里面的调用的 map_images 最终会调用 objc-runtime-new.mm

    64120

    iOS运行时Runtime基础

    本文主要整理了Runtime的相关知识。对于一个iOS开发者来说,掌握Runtime的重要性早已不言而喻。OC能够作为一门优秀的动态特性语言,在其背后默默工作着的就是Runtime。...iOS运行时Runtime.png 相关文章:iOS运行时Runtime应用 目录: 一、怎么理解OC是动态语言,Runtime又是什么?...三、与Runtime的交互 Runtime的官方文档中将OC与Runtime的交互划分三种层次:OC源代码,NSObject方法,Runtime 函数。...七、最后总结: 以上就是iOS运行时的基础知识部分了,理解Runtime的工作原理,下一篇iOS运行时Runtime应用,将总结其在实际开发中的使用。...其他参考链接 1.Objective-C Runtime Programming Guide 2.Objctive-C Runtime 3.iOS Runtime forwardInvocation

    92630

    iOS运行时Runtime应用

    在上篇文章iOS运行时Runtime基础后,本篇将会总结Rutime的具体应用实例,结合其动态特性,Runtime在开发中的应用大致分为以下几个方面: Runtime应用.png 相关文章:iOS运行时...Runtime基础 一、动态方法交换:Method Swizzling 实现动态方法交换(Method Swizzling )是Runtime中最具盛名的应用场景,其原理是:通过Runtime获取到方法实现的地址...zs_systemFontOfSize:fontSize * scale]; } 步骤2:在UIFont的分类中拦截系统方法,将其替换为我们自定义的方法,代码如下: //load方法不需要手动调用,iOS...深入的了解和学习Runtime,不仅仅有助于iOS开发,而且对于理解编程语言的底层原理也十分有用,Keep Learning!...~ 参考链接: 1.Objective-C Runtime Programming Guide 2.Method Swizzling 3.iOS数据持久化存储:归档 4.YYModel源码

    1.3K20

    iOS RunTime之四:消息转发

    消息发送和消息转发流程可以概括为: 消息发送是 Runtime 通过 selector 快速查找 IMP 的过程,有了函数指针就可以执行对应的方法实现; 消息转发是在查找 IMP 失败后执行一系列转发流程的慢速通道...+ (BOOL)resolveClassMethod:(SEL)sel 重定向 - (id)forwardingTargetForSelector:(SEL)aSelector 在消息转发机制执行前,Runtime...其实在 forwardInvocation: 消息发送前,Runtime 系统会向对象发送 methodSignatureForSelector: 消息,并取到返回的方法签名用于生成 NSInvocation...因为当 Runtime 系统在 Cache 和方法分发表中找不到要执行的方法时, Runtime 会调用 resolveInstanceMethod: 或 resolveClassMethod: 来给程序员一次动态添加方法实现的机会...因为当Runtime系统在Cache和方法分发表中找不到要执行的方法时,Runtime会调用resolveInstanceMethod:或resolveClassMethod:来给程序员一次动态添加方法实现的机会

    76331
    领券