
iOS开发进阶
码上飞
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Runtime初识(3.消息转发)
Runtime消息传递一个对象的方法像这样[obj foo],编译器转成消息发送objc_msgSend(obj, foo),Runtime时执行的流程是这样的:首先,通过obj的isa指针找到它的 class ; 在 class 的 method list 找 foo ; 如果 class 中没到 foo,继续往它的 superclass 中找 ; 一旦找到 foo 这个函数,就去...转载 2019-01-17 12:03:12 · 157 阅读 · 0 评论 -
Runtime初识(1.基本定义)
简介Runtime 又叫运行时,是一套底层的 C 语言 API,其为 iOS 内部的核心之一,我们平时编写的 OC 代码,底层都是基于它来实现的。它会将一些工作放在代码运行时才处理而并非编译时。也就是说,有很多类和成员变量在我们编译的时是不知道的,而在运行时,我们所编写的代码会转换成完整的确定的代码运行。因此,编译器是不够的,我们还需要一个运行时系统(Runtime system)来处理编...原创 2019-01-13 17:23:06 · 190 阅读 · 0 评论 -
Runtime初识(4.基本应用)
关联对象(Objective-C Associated Objects)给分类增加属性我们都是知道分类是不能自定义属性和变量的。下面通过关联对象实现给分类添加属性。关联对象Runtime提供了下面几个接口://关联对象void objc_setAssociatedObject(id object, const void *key, id value, objc_Associatio...转载 2019-01-18 17:21:42 · 152 阅读 · 0 评论 -
Runtime初识(2.了解Runtime相关术语的数据结构)
SEL它是selector在 Objc 中的表示(Swift 中是 Selector 类)。selector 是方法选择器,其实作用就和名字一样,日常生活中,我们通过人名辨别谁是谁,注意 Objc 在相同的类中不会有命名相同的两个方法。selector 对方法名进行包装,以便找到对应的方法实现。它的数据结构是:typedef struct objc_selector *SEL;我们可...转载 2019-01-14 14:11:36 · 230 阅读 · 0 评论 -
RunLoop 初识(1.基本概念以及基本认识)
一、RunLoop 简介1.1 RunLoop 基本概念一个线程一次只能执行一个任务,执行完成后线程就会退出。RunLoop 机制能让线程随时处理事件但并不退出。这里说的随时是指:程序需要运行时就保持程序的持续运行,不需要的时候就进入休眠状态。NSRunLoop 和 CFRunLoopRef 都是和RunLoop 机制相关的类。CFRunLoopRef 基于 CoreFoundatio...转载 2019-01-19 14:04:23 · 223 阅读 · 0 评论 -
RunLoop 初识(2.逻辑流程以及实际应用)
RunLoop 相关逻辑流程上图是笔者从网上找到的一张 RunLoop 运行的相关流程逻辑图。具体来说主要执行逻辑是这样的:1、通知观察者 RunLoop 已经启动。 2、通知观察者即将要开始定时器。 3、通知观察者任何即将启动的非基于端口的源。 4、启动任何准备好的非基于端口的源(Source0)。 5、如果基于端口的源(Source1)准备好并处于等待状态,进入步骤9。 ...转载 2019-01-21 14:36:57 · 238 阅读 · 0 评论 -
KVC的实现原理以及日常使用方式
简介KVC是Key Value Coding的简称。它是一种可以通过字符串的名字(key)来访问类属性的机制。而不是通过调用Setter、Getter方法访问。KVC的方法定义在Foundation/NSKeyValueCoding中。KVC使用的基本方法- (nullableid)valueForKey:(NSString*)key;//直接通过Key来取值- (void)set...转载 2019-01-22 14:06:13 · 1182 阅读 · 0 评论