![](https://img-blog.csdnimg.cn/20201014180756923.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Runtime
光速之年
Talk is cheap. Show me the code
展开
-
Ios的消息转发机制
原文链接:http://www.jianshu.com/p/fa29c920409d这篇博客的前置知识点是 OC 的消息传递机制,如果你对此还不了解,请先学习之,再来看这篇。这篇博客我尝试用口语的方式像讲述 PPT 一样给大家讲述这个知识点。我们来思考一个问题,如果对象在收到无法解读的消息时,会发生什么?例如,我们实现一个 viewcontroller,其中并没有一个成员方法名为『setT转载 2016-09-02 09:43:49 · 2831 阅读 · 0 评论 -
NSInvocation、NSMethodSignature 的介绍及使用
在 iOS中可以直接调用 某个对象的消息 方式有2种一种是performSelector:withObject:再一种就是NSInvocation第一种方式比较简单,能完成简单的调用。但是对于>2个的参数或者有返回值的处理,那就需要做些额外工作才能搞定。那么在这种情况下,我们就可以使用NSInvocation来进行这些相对复杂的操作NSInvocation可以处理参转载 2016-06-22 10:29:43 · 591 阅读 · 0 评论 -
深入理解RunLoop
RunLoop 是 iOS 和 OS X 开发中非常基础的一个概念,这篇文章将从 CFRunLoop 的源码入手,介绍 RunLoop 的概念以及底层实现原理。之后会介绍一下在 iOS 中,苹果是如何利用 RunLoop 实现自动释放池、延迟回调、触摸事件、屏幕刷新等功能的。目录RunLoop 的概念RunLoop 与线程的关系RunLoop 对外的接口Ru转载 2016-06-06 11:08:49 · 403 阅读 · 0 评论 -
ios Objective-C Runtime运行时类与对象的编译处理(写的很好,值得阅读)
Objective-C语言是一门动态语言,它将很多静态语言在编译和链接时期做的事放到了运行时来处理。这种动态语言的优势在于:我们写代码时更具灵活性,如我们可以把消息转发给我们想要的对象,或者随意交换一个方法的实现等。这种特性意味着Objective-C不仅需要一个编译器,还需要一个运行时系统来执行编译的代码。对于Objective-C来说,这个运行时系统就像一个操作系统一样:它让所有的工作可以转载 2015-07-24 09:49:42 · 2225 阅读 · 0 评论 -
通过运行时来获取该注册类的所有子类
使用该方法需要包含头文件#import //获取该注册类的所有子类+ (NSArray*)subclassesOfClass:(Class)parentClass{ int numClasses = objc_getClassList(NULL, 0); Class *classes = (Class*)malloc(sizeof(Class) * nu原创 2015-07-08 10:33:22 · 631 阅读 · 0 评论 -
[Objective-C]关联(objc_setAssociatedObject、objc_getAssociatedObject、objc_removeAssociatedObjects)
转自:http://blog.csdn.net/onlyou930/article/details/9299169关联 关联是指把两个对象相互关联起来,使得其中的一个对象作为另外一个对象的一部分。 关联特性只有在Mac OS X V10.6以及以后的版本上才是可用的。在类的定义之外为类增加额外的存储空间 使用关联,我们可以不用修改类的定义而为其对象增加存储转载 2015-05-05 20:06:54 · 376 阅读 · 0 评论 -
为什么子类在重写父类的方法后,会替代原有方法?
个人理解,如有误解请留言.OC 是动态的语言,方法的调用从编译期延缓到了运行期, 所有方法的调用都是通过 objc_msgSend 进行消息的派发,objc_msgSend方法的调用。 objc_msgSend方法含两个必要参数:receiver、方法名(即:selector),如: [receiver message]; 将被转换为:objc_ms原创 2016-09-21 10:49:52 · 1860 阅读 · 0 评论 -
基于runloop的线程保活、销毁与通信
首先看一段AF2.x经典代码:+ (NSThread *)networkRequestThread { static NSThread *_networkRequestThread = nil; static dispatch_once_t oncePredicate; dispatch_once(&oncePredicate, ^{ _networkR转载 2017-02-07 14:28:30 · 2670 阅读 · 0 评论