![](https://img-blog.csdnimg.cn/2019091813595558.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
Runtime
Z苗
这个作者很懒,什么都没留下…
展开
-
iOSRuntime(四)黑科技 class_getInstanceMethod和class_getClassMethod
这两个方法都是可以获取到类里面的方法,不过这两个方法获取的方法类型不同:class_getInstanceMethod 得到类的实例方法class_getClassMethod 得到类的类方法 ps:class_getInstanceMethod只能获取实例方法,如果用它获取类方法的话,获取到的是nil;同理class_getClassMethod只能获取类方法,不能获取实例方法。...原创 2019-04-03 11:00:57 · 3346 阅读 · 0 评论 -
iOSRuntime(二)可复用而且高度解耦的用户统计埋点实现方案(method_exchangeImplementations)
用户统计知识:用户行为统计(User Behavior Statistics, UBS)一直是移动互联网产品中必不可少的环节,也俗称埋点。在保证移动端流量不会受较大影响的前提下,PM们总是希望埋点覆盖面越广越好。目前常规的做法是将埋点代码封装成工具类,但凡工程中需要埋点(如点击事件、页面跳转)的地方都插入埋点代码。一旦项目越来越复杂,你会发现埋点的代码散落在程序的各个角落,不利于维护以及复用...原创 2019-03-28 10:25:59 · 1636 阅读 · 0 评论 -
iOSRuntime(三)objc_setAssociatedObject分类动态添加属性
使用场景:关联对象相当于实例变量,在类别(也有人管叫分类)里面,不能创建实例变量, 关联对象就可以解决这种问题。(对应属性,有对应属性的的runtime 解决方法,本篇文章主讲 关联对象学习)主要函数:void objc_setAssociatedObject(id object, const void *key, id value, objc_AssociationPolicy pol...原创 2019-04-02 19:32:47 · 1685 阅读 · 0 评论 -
ios Runtime(一) 详解
简介Runtime 又叫运行时,是一套底层的 C 语言 API,其为 iOS 内部的核心之一,我们平时编写的 OC 代码,底层都是基于它来实现的。Runtime的特性主要是消息(方法)传递,如果消息(方法)在对象中找不到,就进行转发Runtime 的作用Objc 在三种层面上与 Runtime 系统进行交互:1.通过 Objective-C 源代码2.通过 Foundation 框架的...原创 2019-03-27 19:33:48 · 1100 阅读 · 0 评论 -
iOSRuntime(五)消息转发机制
动态的增加方法 (利用消息转发机制,在运行时实现方法)动态的增加方法和多重继承有些类似,都是调用的方法在类中并没有实现代码,而是在消息转发机制的某一步才动态的添加实现代码。消息转发机制本身有多步骤,所以根据需要,可以在不同的步骤实现动态添加,常见的一般在方法动态解析resolveInstanceMethod或者在消息转发forwardInvocation的时候进行。...原创 2019-04-03 20:24:20 · 874 阅读 · 0 评论