iOS运行时专辑
酒茶白开水
这个作者很懒,什么都没留下…
展开
-
iOS运行时(runtime)探究一:重要概念
iOS运行时简介因为Objc是一门动态语言,所以它总是想办法把一些决定工作从编译连接推迟到运行时。也就是说只有编译器是不够的,还需要一个运行时系统 (runtime system) 来执行编译后的代码。这就是 Objective-C Runtime 系统存在的意义,它是整个Objc运行框架的一块基石。iOS运行时的一些概念1.类:Objective-C类是由Class类型来表示的,它实际上是一个指向原创 2016-08-24 16:34:27 · 1108 阅读 · 0 评论 -
iOS运行时(runtime)探究二:主要函数
一、类相关操作函数// 获取类的类名 const char * class_getName ( Class cls );// 获取类的父类 Class class_getSuperclass ( Class cls );// 判断给定的Class是否是一个元类 BOOL class_isMetaClass ( Class cls );// 获取实例大小 size_t class_getInstanc原创 2016-08-24 18:09:51 · 1282 阅读 · 0 评论 -
iOS运行时(runtime)探究三:消息转发
一、方法调用流程在Objective-C中,消息直到运行时才绑定到方法实现上。编译器会将消息表达式[receiver message]转化为一个消息函数的调用,即objc_msgSend。当消息发送给一个对象时,objc_msgSend通过对象的isa指针获取到类的结构体,然后在方法分发表里面查找方法的selector。如果没有找到selector,则通过objc_msgSend结构体中的指向父类的原创 2016-08-25 19:04:38 · 573 阅读 · 0 评论 -
iOS运行时(runtime)探究四:实际运用
代码下载github下载地址 CSDN下载地址一、Runtime为分类添加属性 在oc中分类是不能添加属性的,可是有的时候在分类中添加属性又显得有必要,那么就可以通过运行时进行动态的添加属性。场景说明:希望能够方便地对UIView添加点击事件。问题分析:这个问题解决的最佳方式应该是使用分类而不是继承,因为继承不能使整个UIView体系中的所有类都具备点击能力。所以就得在分类中添加一个UITa原创 2016-10-14 15:45:06 · 1745 阅读 · 0 评论 -
iOS KVO的自我实现
代码下载代码下载地址系统KVO的使用 KVO:是一种键值观察机制,当某个对象为某属性注册了观察后,只要该对象的此属性发生改变,就会通知观察者。 用KVO 实现如下两个效果:导航栏的透明度随着UITableView的滑动距离而变化(这个功能其实也可以使用UIScrollViewDelegate的代理方法- (void)scrollViewDidScroll:(UIScrollView *)scroll原创 2017-03-30 23:08:42 · 536 阅读 · 0 评论