type
status
date
slug
summary
tags
category
icon
password
AFNetworking 3.0 发布了,这个版本去除了 NSURLConnectionOperation,使用 NSURLSession 代替,于是,这个版本只支持 iOS 7以及以上版本,代码也相应的精简了不少,于是利用一周时间阅读了一下 AFNetworking 3.0 的源码。
技巧
使用
:?
符号,忽略编译器的警告iOS bug fix
AFURLSessionManager.m
AFURLSessionManager.h
多线程
dispatch_semaphore的使用
在
AFURLSessionManager.m
里面的 tasksForKeyPath:
方法,通过引入信号量的方式把NSURLSession
的异步方法 getTasksWithCompletionHandler:
变成了同步方法上面代码中
@unionOfArrays.self
参考:http://nshipster.com/kvc-collection-operators/作者声明二级指针
这里是为了做 KVO 的时候给 context 赋值,便于区分不同的 context,由于这个AFHTTPRequestSerializerObserverContext的内存地址是在编译的时候就决定了,所以这么声明确实可以保证 context 不同,是个比较讨巧的方式
static 方法
作者在多处使用 static 方法
参考 & 代码地址
边阅读边标注,阅读标注后的代码地址:AFNetworking 3.0
参考: