RunTime、RunLoop
文章平均质量分 82
Longshihua
喜欢iOS开发,目前在上海工作!专注Swift学习!
展开
-
Runtime之分类与协议
Objective-C中的分类允许我们通过给一个类添加方法来扩充它(但是通过category不能添加新的实例变量),并且我们不需要访问类中的代码就可以做到。Objective-C中的协议是普遍存在的接口定义方式,即在一个类中通过@protocol定义接口,在另外类中实现接口,这种接口定义方式也成为“delegation”模式,@protocol声明了可以呗其他任何方法类实现的方法,协议仅仅是定...原创 2016-01-08 12:53:31 · 565 阅读 · 0 评论 -
Runtime之消息转发
消息转发当向someObject发送某消息,但runtime system在当前类和父类中都找不到对应方法的实现时,runtime system并不会立即报错使程序崩溃,而是依次执行下列步骤:简述一下流程:1.动态方法解析:向当前类发送 resolveInstanceMethod: 信号,检查是否动态向该类添加了方法。(迷茫请搜索:@dynamic) 2.快速消息转发:检查该类是...原创 2016-01-07 11:34:07 · 643 阅读 · 0 评论 -
Runtime之objc_msgSend函数
首先了解一下什么是Runtime?Runtime顾名思义即为运行时。就是系统运行时候的一些机制,它提供了一些使得对象之间能够传递消息的重要函数,其中最主要的就是消息机制了。相较于C语言而言,C语言使用的是“静态绑定”,函数的调用在编译期就能知道运行期所需要调用的函数了,编译完成之后就按照顺序执行(面向过程就是这么任性)。在对象上调用方法是OC 中经常使用的功能,用 OC 的术语来说,叫做传递消息....原创 2018-03-30 08:37:45 · 886 阅读 · 0 评论 -
Runtime之Method Swizzling
Objective-C 中的 Method Swizzling 是一项异常强大的技术,它可以允许我们动态地替换方法的实现,实现 Hook 功能,是一种比子类化更加灵活的“重写”方法的方式。Method Swizzling 原理在Objective-C中调用一个方法,其实是向一个对象发送消息,查找消息的唯一依据是selector的名字。利用Objective-C的动态特性,可以实现在运行时偷...原创 2016-01-08 10:23:01 · 606 阅读 · 0 评论 -
OC 之关联对象
Objective—C作为一门动态语言,它本身有一个非常大的弱点,即不能在类的category中方便地为类添加新的自定义属性。「关联对象」(Associated Objects)或「关联引用」(Associative References)是基于Objective-C 2.0的一个Runtime特性,它使得可以在Runtime为某个类对象绑定一个对象(通过简单的封装,可以让这个关联属性在使用上和普...原创 2015-12-18 18:05:10 · 743 阅读 · 0 评论 -
NSInvocation
在 iOS中可以直接调用某个对象的消息 方式有2种:一种是performSelector:withObject:,再一种就是NSInvocation.第一种方式比较简单,能完成简单的调用。运行时调用方法都是只接受一个或两个参数,如:- (id)performSelector:(SEL)aSelector;- (id)performSelector:(SEL)aSelector wit...原创 2016-01-01 16:28:17 · 456 阅读 · 0 评论 -
Swift4 - KVO的浅析
KVOKVO即Key-Value-Observing,键值观察,是观察者模式的一种实现。KVO提供了一种机制能够方便的观察对象的属性。如:指定一个被观察对象,当对象的某个属性发生变化时,对象会获得通知,进而可以做出相应的处理。KVO实现原理官方文档具体描述如下:Automatic key-value observing is implemented using a technique called...原创 2018-04-12 14:53:10 · 5153 阅读 · 0 评论 -
iOS - load和initialize的区别
有时候,类必须先执行某些初始化操作,然后才能正常使用。在Objective-C中,绝大多数都继承自NSObject这个根类,而该类有两个方法,可用来实现这种初始化操作。首先讲的是load()方法: load()class func load()官方介绍Invoked whenever a class or category is added to the Objective...原创 2018-05-07 09:48:35 · 1080 阅读 · 0 评论