摘要: 示例 前言 很多iOS应用中都需要下载数据,并对这些下载的过程和结果进行管理,因此我才有了写这个MCDownloader的想法。在 "IOS 文件下载器 MCDownloadManager" 这篇文章中,我使用GCD和集合来实现了这个功能,基本上也能满足需求,这一部分的实现原理主要参考 "AFNet阅读全文
posted @ 2017-04-10 14:02 马在路上 阅读(256) 评论(0) 编辑
摘要: 我们用AFNetworking小试牛刀,写一个简单的下载器来演示功能。 前言 为什么AFNetworking能够成为顶级框架?我们究竟该如何领悟它的精髓所在?这都是很难的问题。安全,高效,流畅,这3个特性缺一不可。假如我们要封装一个通用的网络框架,提供一个文件下载器是很有必要的。按照 管理编程原则 阅读全文
posted @ 2016-09-12 14:43 马在路上 阅读(1347) 评论(4) 编辑
摘要: 闭包没有想象的那么简单 闭包的概念在JavaScript中占据了十分重要的地位,有不少开发者分不清匿名函数和闭包的概念,把它们混为一谈,我希望借这篇文章能够让大家对闭包有一个清晰的认识。 大家都知道变量的作用域有两种: 全局变量和局部变量 。在JavaScript中函数内部可以访问外部全局变量,而函阅读全文
posted @ 2017-06-19 17:19 马在路上 阅读(270) 评论(2) 编辑
摘要: 演示事件的发送和监听 打印结果:阅读全文
posted @ 2017-06-16 18:21 马在路上 阅读(7) 评论(0) 编辑
摘要: 基于 原型继承,动态对象扩展,闭包 ,JavaScript已经成为当今世界上最灵活和富有表现力的编程语言之一。 这里有一个很重要的概念需要特别指出: 在JavaScript中,包括所有的函数,数组,键值对和数据结构都是对象。 举个简单的例子: 上边的代码中,testFunc可以添加customP这个阅读全文
posted @ 2017-06-08 18:03 马在路上 阅读(239) 评论(0) 编辑
摘要: Hoisting is JavaScript's default behavior of moving all declarations to the top of the current scope (to the top of the current script or the current 阅读全文
posted @ 2017-06-01 17:31 马在路上 阅读(9) 评论(0) 编辑
摘要: 语法小结 swift / Created by M.C on 2017/5/26. / / 弹框 / //var message = "Hello world"; //alert(message); / 变量的命名规则 / / 1.变量不能包含任何空格 2.变量只能包含英文单词,数字,美元符号$和下阅读全文
posted @ 2017-05-31 11:43 马在路上 阅读(10) 评论(0) 编辑
摘要: Swift和Javascript的神奇魔法 记录Swift和Javascript如何进行交互 前言 今天在网上看到了一篇介绍Swift和Javascript交互的文章,感觉作者写的很好,因此把作者文章中的主要知识点进行一个总结。 对于我个人而言,在项目中使用Javascript的原因有两个: 某些任阅读全文
posted @ 2017-05-22 16:07 马在路上 阅读(215) 评论(0) 编辑
摘要: 有时候一些奇怪的想法会突然出现在脑海中,那一瞬间仿佛有所领悟 概况 本篇中所分析的所有内容都是以中小型项目为前提的,iOS,Android,Server这3端开发人数不超过20人。由于我本身是做iOS的,因此,会从一个iOS开发者的角度来剖析问题。不一定百分百正确。 设计 产品经理已经设计了app的阅读全文
posted @ 2017-05-15 17:34 马在路上 阅读(56) 评论(0) 编辑
摘要: 本篇是Alamofire中的请求抽象层的讲解 前言 在Alamofire中,围绕着Request,设计了很多额外的特性,这也恰恰表明,Request是所有请求的基础部分和发起点。这无疑给我们一个Request很复杂的想法。但看了Alamofire中 中的代码,Request被设计的又是如此的简单,这阅读全文
posted @ 2017-05-15 15:32 马在路上 阅读(217) 评论(0) 编辑
摘要: 抛砖引玉,大家有没有想过Object C中,NSDictionary是如何实现根据key快速查值的? 前言 在编程的世界中,比较重要的数据结构有以下3个: struct 结构体 array 数组 link list 链表 我们都知道,数组是存储数据的天然载体,在内存中是一段连续的地址,正是由于这个特阅读全文
posted @ 2017-05-10 19:15 马在路上 阅读(54) 评论(0) 编辑
摘要: 示例 前言 很多iOS应用中都需要下载数据,并对这些下载的过程和结果进行管理,因此我才有了写这个MCDownloader的想法。在 "IOS 文件下载器 MCDownloadManager" 这篇文章中,我使用GCD和集合来实现了这个功能,基本上也能满足需求,这一部分的实现原理主要参考 "AFNet阅读全文
posted @ 2017-04-10 14:02 马在路上 阅读(256) 评论(0) 编辑
摘要: 本篇带来Alamofire中关于Timeline的一些思路 前言 Timeline翻译后的意思是时间轴,可以表示一个事件从开始到结束的时间节点。时间轴的概念能够应用在很多地方,比如说微博的主页就是一个时间轴。 Alamofire中Timeline的代码很少,非常简单。因此本篇文章中,我们不会把重点放阅读全文
posted @ 2017-04-05 14:37 马在路上 阅读(205) 评论(0) 编辑
摘要: 本篇讲解跟上传数据相关的多表单 前言 我相信应该有不少的开发者不明白多表单是怎么一回事,然而事实上,多表单确实很简单。试想一下,如果有多个不同类型的文件(png/txt/mp3/pdf等等)需要上传给服务器,你打算怎么办?如果你一个一个的上传,那我无话可说,但是如果你想一次性上传,那么就要考虑服务端阅读全文
posted @ 2017-03-31 16:16 马在路上 阅读(135) 评论(0) 编辑
摘要: 本篇主要讲解Alamofire中如何把服务器返回的数据序列化 前言 和前边的文章不同, 在这一篇中,我想从程序的设计层次上解读ResponseSerialization这个文件。更直观的去探讨该功能是如何一步一步实现的。当然,有一个不好的地方,跟数学问题一样,我们事先知道了结果,因此这是一个已知结果阅读全文
posted @ 2017-03-29 16:05 马在路上 阅读(319) 评论(0) 编辑
摘要: 本篇主要带来Alamofire中Response的解读 前言 在每篇文章的前言部分,我都会把我认为的本篇最重要的内容提前讲一下。我更想同大家分享这些顶级框架在设计和编码层次究竟有哪些过人的地方?当然,这些理解也都是基于我自己的理解。难免具有局限性。 当我们设计完一个Request的时候,我们肯定要处阅读全文
posted @ 2017-03-27 11:54 马在路上 阅读(216) 评论(0) 编辑
摘要: 本篇主要讲解Alamofire中安全验证代码 前言 作为开发人员,理解HTTPS的原理和应用算是一项基本技能。HTTPS目前来说是非常安全的,但仍然有大量的公司还在使用HTTP。其实HTTPS也并不是很贵啊。 在网上可以找到大把的介绍HTTTPS的文章,在阅读 代码前,我们先简单的讲一下HTTPS请阅读全文
posted @ 2017-03-23 16:34 马在路上 阅读(212) 评论(0) 编辑
摘要: Alamofire源码解读系列(七)之网络监控(NetworkReachabilityManager) 本篇主要讲解iOS开发中的网络监控 前言 在开发中,有时候我们需要获取这些信息: 手机是否联网 当前网络是WiFi还是蜂窝 那么我总结一下具体的使用场景有哪些?肯定有遗漏: 1. 聊天列表,需要实阅读全文
posted @ 2017-03-21 11:36 马在路上 阅读(462) 评论(0) 编辑
摘要: 本篇介绍Task代理(TaskDelegate.swift) 前言 我相信可能有80%的同学使用 或者 处理网络事件,并且这两个框架都提供了丰富的功能,我也相信很多人都做了二次封装,但事实上,这个二次封装却又异常简单或者是简陋。这篇文章的内容是Task代理,是一篇很独立的文章,大家可以通过这篇文章了阅读全文
posted @ 2017-03-15 10:29 马在路上 阅读(243) 评论(0) 编辑
摘要: 本篇讲解Result的封装 前言 有时候,我们会根据现实中的事物来对程序中的某个业务关系进行抽象,这句话很难理解。在Alamofire中,使用 来描述请求后的结果。我们都知道Alamofire返回的数据可以经过特殊的处理,比如说序列化,那么我们应该如何在 中获取到这些类型不同的数据呢? 假如说序列化阅读全文
posted @ 2017-03-08 16:34 马在路上 阅读(838) 评论(0) 编辑
摘要: 本篇讲解参数编码的内容 前言 我们在开发中发的每一个请求都是通过 来进行封装的,可以通过一个URL生成 。那么如果我有一个参数字典,这个参数字典又是如何从客户端传递到服务器的呢? Alamofire中是这样使用的: 和URL相关的编码,有两种编码方式: 直接拼接到URL中 通过request的htt阅读全文
posted @ 2017-03-06 11:43 马在路上 阅读(163) 评论(0) 编辑
摘要: 本篇讲解swift中通知的用法 前言 通知作为传递事件和数据的载体,在使用中是不受限制的。由于忘记移除某个通知的监听,会造成很多潜在的问题,这些问题在测试中是很难被发现的。但这不是我们这篇文章探讨的主题。 我曾见过,有的团队为了管理通知,开发了一个类似于 的类,所有通知的添加移除都通过这个类进行管理阅读全文
posted @ 2017-03-01 15:07 马在路上 阅读(113) 评论(0) 编辑
摘要: 本篇主要讲解Alamofire中错误的处理机制 前言 在开发中,往往最容易被忽略的内容就是对错误的处理。有经验的开发者,能够对自己写的每行代码负责,而且非常清楚自己写的代码在什么时候会出现异常,这样就能提前做好错误处理。 Alamofire的错误封装很经典,是使用swift中enum的一个典型案例。阅读全文
posted @ 2017-02-27 16:02 马在路上 阅读(940) 评论(0) 编辑
摘要: 尽管Alamofire的github文档已经做了很详细的说明,我还是想重新梳理一遍它的各种用法,以及这些方法的一些设计思想 前言 因为之前写过一个AFNetworking的源码解读,所以就已经比较了解iOS平台的网络框架是怎么一回事了。 和`AFNetworking`有很多相同的地方,然而,这些相同阅读全文
posted @ 2017-02-23 09:41 马在路上 阅读(1058) 评论(1) 编辑
摘要: 这是我认为的一些重要的知识点进行的总结。 1.图片编码简介 大家都知道,数据在网络中是以二进制流的形式传播的,那么我们该如何把那些1和0解析成我们需要的数据格式呢? 说的简单一点就是,当文件都使用二进制流作为传输时,需要制定一套规范,用来区分该文件到底是什么类型的。 文件头有很多个,我们在这里就介绍阅读全文
posted @ 2017-01-24 16:50 马在路上 阅读(348) 评论(0) 编辑
摘要: 第十一篇 前言 我们知道 是用来管理图片下载的,但我们平时的开发更多的是使用 和`UIButton`这两个控件显示图片。 按照正常的想法,我们只需要在他们的分类中,通过 把图片下载下载之后,再进行赋值就行了。但这样的设计并不是最好的设计, 我们在准备提供一项功能的时候,应该要尽可能的弄明白这个功能的阅读全文
posted @ 2017-01-23 14:23 马在路上 阅读(288) 评论(2) 编辑
摘要: 第十篇 前言 我们先看看 主文件的组成模块: 可以看出来,每个模块即独立又相对关联,当最后拼接出 的时候,我们就可以利用它来做一些有意思的事情。 本篇就主要讲解其中的一个使用场景:批量图片下载。记得之前有一位同学有这样的开发需求:他们公司要做一个漫画APP,漫画都是由图片组成的,每一个本漫画由很多章阅读全文
posted @ 2017-01-22 15:38 马在路上 阅读(111) 评论(2) 编辑
摘要: 第九篇 前言 是`SDWebImage`中最核心的类了,但是源代码确是非常简单的。之所以能做到这一点,都归功于功能的良好分类。 有了 这个基石,我们就能做很多其他的有意思的事情。比如给各种view绑定一个URL,就能显示图片的功能,有了Options,就能满足多种应用场景的图片下载任务。 读源码既能阅读全文
posted @ 2017-01-20 17:04 马在路上 阅读(229) 评论(0) 编辑
摘要: SDWebImage源码解读之SDWebImageDownloader 第八篇 前言 这个类非常简单,作者的设计思路也很清晰,但是我想在这说点题外话。 如果有人问你:你怎么看待编程这件事?你怎么回答。这个问题是我在看这个类的时候,忽然出现在我脑子中的。我突然意识到,其实不管是函数还是属性,他们都是 阅读全文
posted @ 2017-01-09 16:10 马在路上 阅读(697) 评论(0) 编辑
摘要: 关于Swift中的各种函数的使用的总结 前言 时间久了,好多东西我们就会慢慢忘记,在这里总结一下Swift中函数的使用原则,把大部分的函数使用技巧用代码示例来做了演示,但是如果想提高,还是要多多思考才行 1.参数名 函数默认会带参数名,如果不想显示参数名,可以使用下划线_。 func createF阅读全文
posted @ 2017-01-08 16:19 马在路上 阅读(132) 评论(1) 编辑
摘要: 第七篇 前言 本篇文章主要讲解下载操作的相关知识, 的主要任务是把一张图片从服务器下载到内存中。下载数据并不难,如何对下载这一系列的任务进行设计,就很难了。接下来我们一步一步的分析作者在开发中的思路和使用到的技术细节。 NSOperation 想必大家都知道,为了让程序执行的更快,我们用多线程异步的阅读全文
posted @ 2017-01-04 11:58 马在路上 阅读(320) 评论(0) 编辑
摘要: //: Playground noun: a place where people can play import UIKit var str = "Hello, playground" enum Movement { case Left case Right case Top case Botto阅读全文
posted @ 2017-01-03 14:58 马在路上 阅读(224) 评论(0) 编辑
摘要: 用C语言封装OC对象(耐心阅读,非常重要) 本文的主要内容来自 "这里" 前言 做iOS开发的朋友,对OC肯定非常了解,那么大家有没有想过OC中 ,`NSObject NSString`这些对象是怎么封装的?接下来我们就使用C语言来一部一部的实现这个封装。 Object对象 首先我们先封装一个 对象阅读全文
posted @ 2016-12-26 15:13 马在路上 阅读(302) 评论(0) 编辑
摘要: 前言 前段时间装mysql,就遇到了 的错误,网上好多方法都过时了,下边是我的解决方法 原因 这是因为苹果在OS X 10.11中引入的SIP特性使得即使加了sudo(也就是具有root权限)也无法修改系统级的目录,其中就包括了/usr/bin。要解决这个问题有两种做法:一种是比较不安全的就是关闭S阅读全文
posted @ 2016-12-21 09:58 马在路上 阅读(568) 评论(0) 编辑
摘要: 第六篇 前言 我们在SDWebImageCache(上)中了解了这个缓存类大概的功能是什么?那么接下来就要看看这些功能是如何实现的? 再次强调,不管是图片的缓存还是其他各种不同形式的缓存,在原理上都极其相似,我们通过 ,来看看作者是如何实现这个功能的。 在业务中,经常要缓存数据,通过本篇的学习,我们阅读全文
posted @ 2016-12-19 17:05 马在路上 阅读(267) 评论(0) 编辑
摘要: 第五篇 前言 本篇主要讲解图片缓存类的知识,虽然只涉及了图片方面的缓存的设计,但思想同样适用于别的方面的设计。在架构上来说,缓存算是存储设计的一部分。我们把各种不同的存储内容按照功能进行切割后,图片缓存便是其中的一个。 我们在封装自己的图片缓存管理对象的时候, 能够提供大约90%的代码给我们直接使用阅读全文
posted @ 2016-12-14 15:52 马在路上 阅读(406) 评论(0) 编辑
摘要: 第四篇 前言 首先,我们要弄明白一个问题? 为什么要对UIImage进行解码呢?难道不能直接使用吗? 其实不解码也是可以使用的,假如说我们通过 来加载image,系统默认会在主线程立即进行图片的解码工作。 这一过程就是把image解码成可供控件直接使用的位图 。 当在主线程调用了大量的 方法后,就会阅读全文
posted @ 2016-12-09 18:09 马在路上 阅读(536) 评论(0) 编辑
摘要: 递归函数可能跟我们平时想象的不一样阅读全文
posted @ 2016-12-06 18:26 马在路上 阅读(128) 评论(0) 编辑
摘要: 第三篇 前言 本篇主要解读 的配置文件。正如compat的定义,该配置文件主要是兼容Apple的其他设备。也许我们真实的开发平台只有一个,但考虑各个平台的兼容性,对于框架有着很重要的意义。这篇文章的重点是抽取出对于iOS很重要的用法,能够在项目开发中提高效率。 import 导入这个头文件,我们就能阅读全文
posted @ 2016-12-06 14:36 马在路上 阅读(355) 评论(0) 编辑
摘要: 第二篇 前言 本篇是和GIF相关的一个UIImage的分类。主要提供了三个方法: 根据名称获取图片 根据NSData获取图片 修改图片到指定的尺寸 UIImage的size,scale属性 我们先不管图片的更高级的知识,我们简单的对size和scale这两个属性做一下介绍。 注意:如果要获取一个图片阅读全文
posted @ 2016-12-05 16:21 马在路上 阅读(1171) 评论(0) 编辑
摘要: 第一篇 前言 从今天开始,我将开启一段源码解读的旅途了。在这里先暂时不透露具体解读的源码到底是哪些?因为也可能随着解读的进行会更改计划。但能够肯定的是,这一系列之中肯定会有Swift版本的代码。 说说我的目的。想成为一名好的程序员,肯定绕不开模仿这条路。之所以做出这么一个决定,也是想提高自己写框架的阅读全文
posted @ 2016-12-02 18:33 马在路上 阅读(424) 评论(0) 编辑
摘要: 本文转载自 "CGI与FastCGI" 1.当我们在谈到cgi的时候,我们在讨论什么 最早的Web服务器简单地响应浏览器发来的HTTP请求,并将存储在服务器上的HTML文件返回给浏览器,也就是静态html。事物总是不 断发展,网站也越来越复杂,所以出现动态技术。但是服务器并不能直接运行 php,as阅读全文
posted @ 2016-11-15 09:17 马在路上 阅读(87) 评论(0) 编辑