
iOS原理 - Runtime, Runloop
文章平均质量分 60
Runtime, Runloop 原理
直隶码农
coding
展开
-
iOS runtime理解
Runtime是想要做好iOS开发,或者说是真正的深刻的掌握OC这门语言所必需理解的东西。最近在学习Runtime,有自己的一些心得,整理如下,一为 查阅方便二为 或许能给他人一些启发,三为 希望得到大家对这篇整理不足之处的一些指点。什么是Runtime我们写的代码在程序运行过程中都会被转化成runtime的C代码执行,例如[target doSomething转载 2017-01-09 16:29:16 · 274 阅读 · 0 评论 -
Runtime - Method Swizzling
原文出处: 南峰子的技术博客 理解Method Swizzling是学习runtime机制的一个很好的机会。在此不多做整理,仅翻译由Mattt Thompson发表于nshipster的Method Swizzling一文。Method Swizzling是改变一个selector的实际实现的技术。通过这一技术,我们可以在运行时通过修改类的分发表中selector对应的函数,来转载 2017-03-14 23:17:20 · 254 阅读 · 0 评论 -
Objective-C 对象模型
元类(Meta Class)元类存储着一个类的所有类方法,当我们向一个对象发送消息时,runtime会在这个对象所属的这个类的方法列表中查找方法;而向一个类发送消息时,会在这个类的meta-class的方法列表中查找。对象,类及元类的继承关系图类(Class)Objective-C类是由Class类型来表示的,它实际上是一个指向objc_class结转载 2017-03-14 15:23:55 · 495 阅读 · 0 评论 -
基于runloop的线程保活、销毁与通信
首先看一段AF2.x经典代码:+ (NSThread *)networkRequestThread { static NSThread *_networkRequestThread = nil; static dispatch_once_t oncePredicate; dispatch_once(&oncePredicate, ^{ _networkR转载 2017-03-10 00:19:52 · 871 阅读 · 0 评论 -
深入理解RunLoop
RunLoop 是 iOS 和 OSX 开发中非常基础的一个概念,这篇文章将从 CFRunLoop 的源码入手,介绍 RunLoop 的概念以及底层实现原理。之后会介绍一下在 iOS 中,苹果是如何利用 RunLoop 实现自动释放池、延迟回调、触摸事件、屏幕刷新等功能的。IndexRunLoop 的概念RunLoop 与线程的关系RunLoop 对外的接口RunLoop转载 2017-03-10 00:18:39 · 285 阅读 · 0 评论 -
NSRunLoop 和 NSTimer
- (void)viewDidLoad{ [super viewDidLoad]; // Do any additional setup after loading the view, typically from a nib. NSTimer * timer = [NSTimer scheduledTimerWithTimeInterval:1转载 2016-09-05 17:51:11 · 282 阅读 · 0 评论 -
深入理解RunLoop
RunLoop 是 iOS 和 OS X 开发中非常基础的一个概念,这篇文章将从 CFRunLoop 的源码入手,介绍 RunLoop 的概念以及底层实现原理。之后会介绍一下在 iOS 中,苹果是如何利用 RunLoop 实现自动释放池、延迟回调、触摸事件、屏幕刷新等功能的。目录RunLoop 的概念RunLoop 与线程的关系RunLoop 对转载 2017-01-12 19:26:19 · 312 阅读 · 0 评论 -
RuntimeSummary
目录消息机制介绍 / Messaging方法交换 / MethodSwizzling动态加载方法 / ResolveInstanceMethod消息转发 / ForwardMessage动态关联属性 / AssociatedObject字典转模型 / MakeModel对象归档、解档 / ObjectArchive消息机制介绍 / Messa转载 2017-02-19 22:22:32 · 548 阅读 · 0 评论 -
runtime详解
转:http://www.jianshu.com/p/46dd81402f63一:基本概念Runtime基本是用C和汇编写的,可见苹果为了动态系统的高效而作出的努力。你可以在这里下到苹果维护的开源代码。苹果和GNU各自维护一个开源的runtime版本,这两个版本之间都在努力的保持一致。Objective-C 从三种不同的层级上与 Runtime 系统进行交互,分别是通过 Obj转载 2017-02-19 22:12:12 · 389 阅读 · 0 评论 -
深入理解Object-C消息转发机制
相信大家对Object-C的消息传递机制并不陌生(如果不熟悉,我后续会再写一篇关于消息传递机制的文章),今天我来讲解另外一个重要的问题,就是对象在收到无法解读的消息之后会发生什么情况。若想令类能理解某条消息,我们必须以程序码实现出对应的方法才行。但是,在编译器向类发送了其无法解读的消息并不会报错,因为在运行期可以继续向类中添加方法(动态添加),所以编译器在编译时还无法确知类中到底会不会有某个方转载 2017-01-09 17:30:57 · 525 阅读 · 0 评论 -
iOS运行时Runtime浅析
运行时是iOS中一个很重要的概念,iOS运行过程中都会被转化为runtime的C代码执行。例如[target doSomething];会被转化成objc)msgSend(target,@selector(doSomething))来执行。这篇博客会较为全面的来讲解下Runtime。 OC是一门动态语言,它将很多静态语言在编译和链接时做的事放到了运行时来处理。这种动态语言的优势转载 2017-01-10 16:41:07 · 315 阅读 · 0 评论 -
iOS开发-Runtime详解
简介Runtime 又叫运行时,是一套底层的 C 语言 API,其为 iOS 内部的核心之一,我们平时编写的 OC 代码,底层都是基于它来实现的。比如:[receiver message];// 底层运行时会被编译器转化为:objc_msgSend(receiver, selector)// 如果其还有参数比如:[receiver message:(id)arg...];//转载 2017-01-10 16:36:44 · 232 阅读 · 0 评论 -
methodForSelector 和 instanceMethodForSelector
使用方法:- (void)testIMP{ //1. 实例方法无参数 TestClass *adapt = [[TestClassalloc] init]; SEL sel =@selector(test); IMP imp = [adaptmethodForSelector:sel]; vo原创 2017-06-07 12:12:59 · 1249 阅读 · 0 评论