黄成都的技术博客

万事开头难,然后中间难,最后结尾难。

AFNetWorking源码之AFHTTPSessionManager

1 概述AFHTTPSessionManager是AFURLSessionManager的子类。我们可以通过这个类做HTTP请求。其实整个AFHTTPSessionManager逻辑很简单,只是用HTTP的方式拼接了请求,并且调用父类的方式做处理。我会通过AFHTTPSessionManagerapi来讲一下POST上传数据的几种基本格式,然后我再随便分析一下AFHTTPSessionMan......

AFNetWorking源码之AFURLSessionManager

1 概述AFNetWorking基本上是所有iOS项目的标配。现在升级带最新版的3.X了。得益于苹果从NSURLConnection升级到NSURLSession,AFN也实现了api的简化,同时功能却一点没少。我们来看一下AFN3.X的目录结构: AFNetWorking 这个文件是一个头文件。啥也没做,就是引入了其他文件方便使用。 AFURLSessionManager 这个文件是核心......

UIViewController和UIView不同加载方式的生命周期函数

1 基本说明话说做了iOS几年,对于UIViewController和UIView的生命周期函数一直不是很重视,导致了很多模糊的地方。今天专门写一个Demo来验证一下,发现不同加载方式差别还是蛮大的。具体Demo地址UIViewController和UIView生命周期加载和卸载。 2 加载UIViewController每一种加载方式所调用的加载方法不同,而且还有一些细节地方不同。苹果为我......
iOS

AFNetWorking源码之NSURLSession系列概述

1 基本说明记得我刚做iOS的时候,那时候还是ASI和AFN共存,甚至ASI使用比例还多点,一转眼几年过去,ASI基本已经消失了,AFN基本成了iOS项目的标配。我虽然以前也有看过AFN2.x的源码,但是对于AFN3.x的源码一直没有自己阅读。接下来我会对AFN3.x学习并且写博客记录。得益于NSURLSession的强大功能,ANF3.0放弃了NSURLConnection这一部分,让代码......

Block原理分析详解

1 基本说明Block一直是OC的一个重点、难点、黑科技。Block在日常项目中经常使用,他的实现方式和一般的oc代码不一样。同时也很容易出现使用不慎的情况。我们知道OC的本质是C语言+runtime。runtime中的具体实现完全就是汇编加上C语言。而且我们发现大部分都是通过结构体实现的。我们可以通过clang -rewrite-objc main.m这种命令把包含Block的main.m......

WebViewJavascriptBridge原理解析

基本说明我们的项目是一个OC与javascript重度交互的app,OC与javascript交互的那部分是在WebViewJavascriptBridge的github地址的基础上修改的,WebViewJavascriptBridge应该是当前最流行最成功的OC与Web交互实现了。最近看了一下他的实现原理,顺便也为后面项目扩展打下基础。为了简化讲解过程,我忽略了UIWebView的实现过程......

HTTP协议详解(二)

HTTP结构1.1 Web服务器 Web服务器一般会执行以下几个操作: (1) 建立连接——接受一个客户端连接,或者如果不希望与这个客户端建立连接,就 将其关闭。 (2) 接收请求——从网络中读取一条 HTTP 请求报文。 (3) 处理请求——对请求报文进行解释,并采取行动。 (4) 访问资源——访问报文中指定的资源。 (5) 构建响应——创建带有正确首部的 HTTP 响应报文。 (6......

HTTP协议详解(一)

HTTP:Web的基础1.1 HTTP概述 1.1.1 概述http仔细给每种要通过Web传输的对象打上名为MIME类型的数据格式标签,当web浏览器从服务器取回一个对象时,通过MIME来决定如何处理对象。常见的MIME格式如下: HTML 格式的文本文档由 text/html 类型来标记。 普通的 ASCII 文本文档由 text/plain 类型来标记。 JPEG 格式的图片为 ima......

Javascript的数据结构与算法(四)

1 排序和搜索算法 1.1 排序算法1.1.1 冒泡排序冒泡排序比较任何两个相邻的项,如果第一个比第二个大,则交换它们。元素项向上移动至正确的顺序,就好像气泡升至表面一样,冒泡排序因此得名。冒泡排序的时间复杂度为O(n2)。 1234567891011121314151617//冒泡排序bubbleSort: function() { var self = this; ......

Javascript的数据结构与算法(三)

1 树 一个树结构包含一系列存在父子关系的节点。每个节点都有一个父节点(除了顶部的第一个节点)以及零个或多个子节点。位于树顶部的节点叫作根节点(11)。它没有父节点。树中的每个元素都叫作节点,节点分 为内部节点和外部节点。至少有一个子节点的节点称为内部节点。没有子元素的节点称为外部节点或叶节点。节点的一个属性是深度,节点的深度取决于它的祖先节点的数量。树的高度取决于所有节点深度的最大值。一棵......