iOS中KVO使用和底层原理
iOS 中 KVO, 是key-value-observing 的缩写, 是Objective-C 对观察者设计模式的一种实现,类似观察者设计模式的还有NSNotificationCenter,不过一个是一对一(KVO),一个是一对多(NSNotificationCenter) ; 一般继承自NSObject 的对象都支持KVO. 日常开发中我们常常会监听数据模型的变化, 从而达到根据数据模型的修改对视图进行更新的要求;
KVO 常用方 ...
iOS 扩展&代理&通知
扩展用途
声明私有属性
声明私有成员变量
声明私有方法
特点注意与 category 的区别 * 编译时决议 * 只以声明的形式存在,多数情况下寄生在宿主类的. m中 * 不能为系统类添加扩展
代理
准确的来说是一种软件设计模式, 代理模式
iOS 中, 系统为我们提供了@ protocol 形式
代理是一对一的
协议有必须要实现的(@require), 不惜要实现的(option)
一般用 weak 来规避循环引用
通 ...
iOS 分类源码解读
分类的好处用分类声明一些私有方法;分类一些体积庞大的类文件,eg: AppDelegate, 组织代码更灵活把 framework 的私有方法公开
分类的特点
运行时决议, 在 runtime 添加到类中, 在编辑的时候分类会将分类方法作为一个数组,动态的添加到宿主类中, 如果存在同名的扩展方法, 那么最后一个参与编译的方法生效并覆盖之前的同名方法(但是还是实际存在的,不过优先级没有分类中的高), 但是可以通过一些代码决定调用最后一个参 ...
UI事件传递以及事件响应原理
CALayer -> content显示内容, 实际是合成了一个个位图; 用来展示 我们平常所说的掉帧也是因为位图合成后未来得及显示绘制造成的 view 提供内容, 负责处理触摸事件,参与视图响应链 layer, 负责内容上的显示, contents; 之所以这样设计是因为单一元件负责单元任务, 即单一原则;
事件传递:1234//返回响应事件的视图-(UIView *)hitTest:(CGPoint)point WithEve ...
模仿 tableViewCell 实现一个简易的重用视图
之前面试的时候会有很多人问道 UITableviewCellde 重用机制, 大部分回答都是
在缓存池初中通过 dequeueReusableCellWithIdentifier:CellIdentifier 方法取出可重用的 cell, 在一个 cell 离开屏幕显示的范围内, 会自动被加入到缓存池中,然后在缓存池中取出一个 cell, 放到当前屏幕上;用重用机制会节省性能,避免出现一些因为网络因素而造成的卡顿现象。
复用机制避免 ...



