ios开发
文章平均质量分 63
大六书
这个作者很懒,什么都没留下…
展开
-
Objective-C Runtime 运行时(4)
Objective-C中可以通过category给一个类添加方法扩充它,但不能添加实例变量。还可以通过@protocol定义接口,@protocol声明的方法后由其它类负责实现。 Category是一个指向分类结构体的指针,定义如下:typedef struct objc_category *Category;struct objc_category { char *category_n原创 2017-12-20 00:33:09 · 132 阅读 · 0 评论 -
GCD(Grand Central Dispatch)
GCD属于系统级的线程管理,在Dispatch queue中执行任务,GCD中的FIFO队列称为dispatch queue,用来保证先进来的任务先得到执行。概要(1)和operation queue一样都是基于队列的并发编程API,通过集中管理协同工作的线程池。 (2)公开的5个不同优先级队列:运行于主线程的main queue,3个不同优先级(High Priority Queue,原创 2017-12-30 22:49:20 · 163 阅读 · 0 评论 -
Objective-C Runtime 运行时(2)
Runtime机制中最重要的特性是消息处理机制。先了解一下与方法相关的一些概念。SEL:又叫选择器,是一个方法的selector的指针,定义如下:typedef struct objc_selector *SEL;selector实际就是方法名,它是在编译时根据方法的方法名,参数序列生成一个标示符,这个标示符就是SEL。两个类不管是否存在继承关系,只要方法名相同,那么方法的SEL就是原创 2017-12-18 22:00:42 · 139 阅读 · 0 评论 -
Objective-C Runtime 运行时(3)
Method Swizzling:方法混淆,顾名思义将两个方法交换,即由A-AIMP,B-BIMP变成A-BIMP,B-AIMP。 方法混淆原理:每个类都有一个方法(Method)列表,Method包含SEL和IMP的对应关系,方法交换就是将SEL和IMP的关系断开,并和新的IMP生成新的对应关系。 相关函数介绍//获取通过SEL获取一个方法class_getInstanceMethod//原创 2017-12-19 01:07:46 · 145 阅读 · 0 评论 -
知识总结Objective-C Runtime 运行时(1)
c语言不是动态语言,函数的调用在编译时候已经确定,编译完成后按照顺序执行即可。OC作为动态语言主要是因为Runtime库的支持,由于Runtime库的作用使得c语言具有了动态语言的特性,runtime保持在程序运行时创建,修改类,对象和方法,OC的函数调用通过runtime进行消息的转发。 Object-C类typedef struct objc_class *Class;struc原创 2017-12-16 00:41:16 · 221 阅读 · 0 评论