布局结束监听工具

有些时候,需要知道什么时候View会布局完成。比如需要在View布局完成之后,希望页面自动跳转到某一

个模块,如果不知道View什么时候布局完成,那跳转到某个位置的高度就无法计算了。

阅读全文

Node小结

​ 最近工作中用到了Node,实现了一个数据抓取处理的自动化工具。平时的使用中,主要还是依

赖各种库。对Node本身的一些原理性的东西也不是很清楚,只是会参考文档使用API,所以需要学习总结一下~

要点

  • Node平台的结构
  • js调用C++
  • 异步IO
  • 事件循环
  • 异步流程处理
  • 模块的加载和查找
  • 相关的工具

阅读全文

iOS性能监控

卡顿

通过观察者注册到RunLoop可以在以下几个阶段收到通知

kCFRunLoopEntry

kCFRunLoopBeforeTimers

kCFRunLoopBeforeSources

kCFRunLoopBeforeWaiting

kCFRunLoopAfterWaiting

kCFRunLoopExit

kCFRunLoopAllActivities

__CFRunLoopRun具体源码分析可见这篇博客,根据源码提炼出Runloop循环的主要流程如下图:

runLoop循环流程

阅读全文

Method Swizzle的危机

在同时使用RAC和Aspects的时候,遇到了一个Crash,栈溢出了。

看了一下,是之前在项目中使用了RAC的rac_singalForSelector

1
2
3
4
5
6
@weakify(self);
[[viewController rac_signalForSelector:@selector(viewDidAppear:)] subscribeNext
:^(id x) {
@strongify(self);
self.shouldIgnorePushingViewControllers = NO;
}];

阅读全文

Git Hook

git hook 通过在代码commit和push之前执行一个脚本,来实现一些检查性工作😎。

在.git/hooks目录下的脚本文件,默认情况下该目录下有以下文件

applypatch-msg.sample

commit-msg:sample

阅读全文

Method Swizzle中的对象模型

通常通过method swizzle可以交换两个方法的实现(不限于同一个类型),先看一段代码:

People类

1
2
3
4
- (void)talk
{
NSLog(@"%@", self.class);
}

阅读全文

iOS定位库-INTULocationRequest

对象关系

对象关系.png

对象各自的功能

模块和功能.png

阅读全文

AFNetWorking—NSURLSession

NSURLSession是iOS7推出的新一代网络框架,在NSURLConnection的基础上多了一种选择,AFNetwrking基于NSURLSession也实现了相应的网络请求API。从功能模块划分,网络可用性,数据的序列化和反序列化以及安全策略这几部分都是一样的,主要是网络请求的管理,请求和返回的处理比前者更加简单,应该说NSURLSession从系统层面实现了NSURLConnection没有实现的部分,比如管理多个请求,直接面向应用层提供上传下载的接口,所以AFNetworking基于NSRULSession实现的网络层更简单,但是功能上没有NSURLConnection那么丰富,比如监听所有任务中完成任务的进度,还有和UIKit的集成。

阅读全文

AFNetworking-NSURLConnection

AFURLConnectionOperation

AFURLConnectionOperation继承自NSOpeartion,并且实现了NSURLConnection协议.

阅读全文

AFNetworking-ResponseSerializer

概况:

这部分比较简单,一共有以下几个类:

  • AFHTTPResponseSerializer
  • AFJSONResponseSerializer : AFHTTPResponseSerializer

阅读全文