摘要:创建ConstraintViewDSL调用UIView 的 snp 方法,生成一个ConstraintViewDSL。注意这个生成的ConstraintViewDSL持有UIView。 创建ConstraintMaker调用makeConstraints,调用ConstraintMaker对应的静态方法。在方法的实现中,创建一个ConstraintMaker。注意这个ConstraintMak...
阅读全文
摘要:如图上图所示,居于中心的是ConstraintDescription,它用来生成Constraint,最后再转换成系统的NSLayoutConstraint。 ConstraintDescription包含约束必备的所有因素 internal let item: LayoutConstraintItem internal var attributes: ConstraintAttr...
阅读全文
摘要:时间顺序如上图:self.latency = initialResponseTime - requestStartTimeself.requestDuration = requestCompletedTime - requestStartTimeself.serializationDuration = serializationCompletedTime - requestCompletedTi...
阅读全文
摘要:以DataRequest 为例子。 最简单的返回URLSession 有一个方法,可以构建 URLSessionDataTaskfunc dataTask(with url: URL, completionHandler: @escaping (Data?, URLResponse?, Error?) -> Void) -> URLSessionDataTaskDataRequest 也提供了...
阅读全文
摘要:AFError is the error type returned by Alamofire. It encompasses a few different types of errors, each with their own associated reasons.使用 AFError 来表示所有的网络错误,分为几大类,每一类又分几小类。AFError 是一个枚举类型!下面就是所有的枚举...
阅读全文
摘要:以创建一个 DataRequest 为例子发起请求创建 SessionManager顺带也创建了一个 SessionDelegate持有一个urlSession,持有一个串行的 DispatchQueue A。注意,这个不是urlSession 回调方法执行时所在的OperationQueue 创建 Requestable 的 struct,并创建underlying 的 URLSessionD...
阅读全文
摘要:源码架构Alamofire 的源码包括 Core、Extensions、Features、Supporting Files。其中主要逻辑在 Core里。包括构造请求,发起请求,处理回调等。 Core 的架构Core 中主要有 SessionManager、SessionDelegate、Request和 TaskDelegate 这些类。 SessionManager是一切的起点,它持有一...
阅读全文