摘要: 示例 前言 很多iOS应用中都需要下载数据,并对这些下载的过程和结果进行管理,因此我才有了写这个MCDownloader的想法。在 "IOS 文件下载器 MCDownloadManager" 这篇文章中,我使用GCD和集合来实现了这个功能,基本上也能满足需求,这一部分的实现原理主要参考 "AFNet阅读全文
posted @ 2017-04-10 14:02 马在路上 阅读(364) 评论(0) 编辑
摘要: 我们用AFNetworking小试牛刀,写一个简单的下载器来演示功能。 前言 为什么AFNetworking能够成为顶级框架?我们究竟该如何领悟它的精髓所在?这都是很难的问题。安全,高效,流畅,这3个特性缺一不可。假如我们要封装一个通用的网络框架,提供一个文件下载器是很有必要的。按照 管理编程原则 阅读全文
posted @ 2016-09-12 14:43 马在路上 阅读(1920) 评论(4) 编辑
摘要: 在iOS中我们经常用到单利模式,这样就能够实现在多处共享同一数据,那么在Node.js中也存在这种模式。 我们知道,Node.js中模块的概念很重要,在写模块的接口的时候,只需要暴露出一个实例对象就能实现单利模式。 这依赖于模块加载的缓存机制,在这篇文章中我给出了说明。 "Node.js之循环依赖"阅读全文
posted @ 2017-10-12 11:41 马在路上 阅读(7) 评论(0) 编辑
摘要: 在Node.js中有可能会出现循环依赖的问题,在此做一个简单的记录 假如有一个模块A: 假如有一个模块B: 我们在main.js中调用他们: 这就是一个循环依赖的问题,a中加载了b,b中加载了a,我们看一下输出结果: 可以发现,虽然循环依赖了 ,但是并没有造成死循环,这是怎么做到的呢? 原理就是模块阅读全文
posted @ 2017-10-11 10:40 马在路上 阅读(12) 评论(0) 编辑
摘要: 前言 这篇文章算是对 "Building APIs with Node.js" 这本书的一个总结。用Node.js写接口对我来说是很有用的,比如在项目初始阶段,可以快速的模拟网络请求。正因为它用js写的,跟iOS直接的联系也比其他语言写的后台更加接近。 这本书写的极好,作者编码的思路极其清晰,整本书阅读全文
posted @ 2017-09-28 16:31 马在路上 阅读(521) 评论(4) 编辑
摘要: 最近在考项目管理的课程,学到了系统工程这一门课,有一些感触和领悟,特在此记录一下。 这些想法和下边叙述的内容都是我个人在编程方面的一些想法,由于不善写作,可能例子会比较少。有兴趣的朋友,可以在评论区留言,我们做进一步的交流。 先说说我得出的结论: 当我们使用系统的思想去处理程序,有很多令我疑惑的问题阅读全文
posted @ 2017-09-11 18:27 马在路上 阅读(57) 评论(0) 编辑
摘要: 一个简单的测试 一个简单的api阅读全文
posted @ 2017-09-09 01:51 马在路上 阅读(36) 评论(0) 编辑
摘要: consumed这个单词我并不能给出很准确的翻译,在这篇文章中,我把Consumed parameters称为耗用参数,它在OC中有着独特的应用场景。 在 "https://clang.llvm.org/docs/AutomaticReferenceCounting.html id7" 这份文档中,阅读全文
posted @ 2017-08-21 18:25 马在路上 阅读(70) 评论(0) 编辑
摘要: Undefined 对未初始化的变量执行typeof操作符会返回 值,而对未声明的变量执行typeof操作符同样也会返回 Boolean 各种类型转换成Boolean的规则 数据类型 | 转成true的值 | 转成false的值 | | Boolean | true | false String |阅读全文
posted @ 2017-08-10 14:52 马在路上 阅读(55) 评论(0) 编辑
摘要: 前言 本篇文章将带来YYCache的解读,YYCache支持内存和本地两种方式的数据存储。我们先抛出两个问题: YYCache是如何把数据写入内存之中的?又是如何实现的高效读取? YYCache采用了何种方式把数据写入磁盘? 这次的解读跟之前的源码解读不同,我只会展示重要部分的代码,因为我们学习YY阅读全文
posted @ 2017-06-27 18:49 马在路上 阅读(625) 评论(0) 编辑
摘要: 闭包没有想象的那么简单 闭包的概念在JavaScript中占据了十分重要的地位,有不少开发者分不清匿名函数和闭包的概念,把它们混为一谈,我希望借这篇文章能够让大家对闭包有一个清晰的认识。 大家都知道变量的作用域有两种: 全局变量和局部变量 。在JavaScript中函数内部可以访问外部全局变量,而函阅读全文
posted @ 2017-06-19 17:19 马在路上 阅读(330) 评论(2) 编辑
摘要: 演示事件的发送和监听 打印结果:阅读全文
posted @ 2017-06-16 18:21 马在路上 阅读(41) 评论(0) 编辑
摘要: 基于 原型继承,动态对象扩展,闭包 ,JavaScript已经成为当今世界上最灵活和富有表现力的编程语言之一。 这里有一个很重要的概念需要特别指出: 在JavaScript中,包括所有的函数,数组,键值对和数据结构都是对象。 举个简单的例子: 上边的代码中,testFunc可以添加customP这个阅读全文
posted @ 2017-06-08 18:03 马在路上 阅读(347) 评论(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 马在路上 阅读(20) 评论(0) 编辑
摘要: 语法小结 swift / Created by M.C on 2017/5/26. / / 弹框 / //var message = "Hello world"; //alert(message); / 变量的命名规则 / / 1.变量不能包含任何空格 2.变量只能包含英文单词,数字,美元符号$和下阅读全文
posted @ 2017-05-31 11:43 马在路上 阅读(22) 评论(0) 编辑
摘要: Swift和Javascript的神奇魔法 记录Swift和Javascript如何进行交互 前言 今天在网上看到了一篇介绍Swift和Javascript交互的文章,感觉作者写的很好,因此把作者文章中的主要知识点进行一个总结。 对于我个人而言,在项目中使用Javascript的原因有两个: 某些任阅读全文
posted @ 2017-05-22 16:07 马在路上 阅读(633) 评论(0) 编辑
摘要: 有时候一些奇怪的想法会突然出现在脑海中,那一瞬间仿佛有所领悟 概况 本篇中所分析的所有内容都是以中小型项目为前提的,iOS,Android,Server这3端开发人数不超过20人。由于我本身是做iOS的,因此,会从一个iOS开发者的角度来剖析问题。不一定百分百正确。 设计 产品经理已经设计了app的阅读全文
posted @ 2017-05-15 17:34 马在路上 阅读(114) 评论(0) 编辑
摘要: 本篇是Alamofire中的请求抽象层的讲解 前言 在Alamofire中,围绕着Request,设计了很多额外的特性,这也恰恰表明,Request是所有请求的基础部分和发起点。这无疑给我们一个Request很复杂的想法。但看了Alamofire中 中的代码,Request被设计的又是如此的简单,这阅读全文
posted @ 2017-05-15 15:32 马在路上 阅读(439) 评论(0) 编辑
摘要: 抛砖引玉,大家有没有想过Object C中,NSDictionary是如何实现根据key快速查值的? 前言 在编程的世界中,比较重要的数据结构有以下3个: struct 结构体 array 数组 link list 链表 我们都知道,数组是存储数据的天然载体,在内存中是一段连续的地址,正是由于这个特阅读全文
posted @ 2017-05-10 19:15 马在路上 阅读(119) 评论(0) 编辑
摘要: 示例 前言 很多iOS应用中都需要下载数据,并对这些下载的过程和结果进行管理,因此我才有了写这个MCDownloader的想法。在 "IOS 文件下载器 MCDownloadManager" 这篇文章中,我使用GCD和集合来实现了这个功能,基本上也能满足需求,这一部分的实现原理主要参考 "AFNet阅读全文
posted @ 2017-04-10 14:02 马在路上 阅读(364) 评论(0) 编辑
摘要: 本篇带来Alamofire中关于Timeline的一些思路 前言 Timeline翻译后的意思是时间轴,可以表示一个事件从开始到结束的时间节点。时间轴的概念能够应用在很多地方,比如说微博的主页就是一个时间轴。 Alamofire中Timeline的代码很少,非常简单。因此本篇文章中,我们不会把重点放阅读全文
posted @ 2017-04-05 14:37 马在路上 阅读(270) 评论(0) 编辑
摘要: 本篇讲解跟上传数据相关的多表单 前言 我相信应该有不少的开发者不明白多表单是怎么一回事,然而事实上,多表单确实很简单。试想一下,如果有多个不同类型的文件(png/txt/mp3/pdf等等)需要上传给服务器,你打算怎么办?如果你一个一个的上传,那我无话可说,但是如果你想一次性上传,那么就要考虑服务端阅读全文
posted @ 2017-03-31 16:16 马在路上 阅读(170) 评论(0) 编辑
摘要: 本篇主要讲解Alamofire中如何把服务器返回的数据序列化 前言 和前边的文章不同, 在这一篇中,我想从程序的设计层次上解读ResponseSerialization这个文件。更直观的去探讨该功能是如何一步一步实现的。当然,有一个不好的地方,跟数学问题一样,我们事先知道了结果,因此这是一个已知结果阅读全文
posted @ 2017-03-29 16:05 马在路上 阅读(545) 评论(0) 编辑
摘要: 本篇主要带来Alamofire中Response的解读 前言 在每篇文章的前言部分,我都会把我认为的本篇最重要的内容提前讲一下。我更想同大家分享这些顶级框架在设计和编码层次究竟有哪些过人的地方?当然,这些理解也都是基于我自己的理解。难免具有局限性。 当我们设计完一个Request的时候,我们肯定要处阅读全文
posted @ 2017-03-27 11:54 马在路上 阅读(614) 评论(0) 编辑
摘要: 本篇主要讲解Alamofire中安全验证代码 前言 作为开发人员,理解HTTPS的原理和应用算是一项基本技能。HTTPS目前来说是非常安全的,但仍然有大量的公司还在使用HTTP。其实HTTPS也并不是很贵啊。 在网上可以找到大把的介绍HTTTPS的文章,在阅读 代码前,我们先简单的讲一下HTTPS请阅读全文
posted @ 2017-03-23 16:34 马在路上 阅读(471) 评论(0) 编辑
摘要: Alamofire源码解读系列(七)之网络监控(NetworkReachabilityManager) 本篇主要讲解iOS开发中的网络监控 前言 在开发中,有时候我们需要获取这些信息: 手机是否联网 当前网络是WiFi还是蜂窝 那么我总结一下具体的使用场景有哪些?肯定有遗漏: 1. 聊天列表,需要实阅读全文
posted @ 2017-03-21 11:36 马在路上 阅读(815) 评论(0) 编辑
摘要: 本篇介绍Task代理(TaskDelegate.swift) 前言 我相信可能有80%的同学使用 或者 处理网络事件,并且这两个框架都提供了丰富的功能,我也相信很多人都做了二次封装,但事实上,这个二次封装却又异常简单或者是简陋。这篇文章的内容是Task代理,是一篇很独立的文章,大家可以通过这篇文章了阅读全文
posted @ 2017-03-15 10:29 马在路上 阅读(557) 评论(0) 编辑
摘要: 本篇讲解Result的封装 前言 有时候,我们会根据现实中的事物来对程序中的某个业务关系进行抽象,这句话很难理解。在Alamofire中,使用 来描述请求后的结果。我们都知道Alamofire返回的数据可以经过特殊的处理,比如说序列化,那么我们应该如何在 中获取到这些类型不同的数据呢? 假如说序列化阅读全文
posted @ 2017-03-08 16:34 马在路上 阅读(1042) 评论(0) 编辑
摘要: 本篇讲解参数编码的内容 前言 我们在开发中发的每一个请求都是通过 来进行封装的,可以通过一个URL生成 。那么如果我有一个参数字典,这个参数字典又是如何从客户端传递到服务器的呢? Alamofire中是这样使用的: 和URL相关的编码,有两种编码方式: 直接拼接到URL中 通过request的htt阅读全文
posted @ 2017-03-06 11:43 马在路上 阅读(233) 评论(0) 编辑
摘要: 本篇讲解swift中通知的用法 前言 通知作为传递事件和数据的载体,在使用中是不受限制的。由于忘记移除某个通知的监听,会造成很多潜在的问题,这些问题在测试中是很难被发现的。但这不是我们这篇文章探讨的主题。 我曾见过,有的团队为了管理通知,开发了一个类似于 的类,所有通知的添加移除都通过这个类进行管理阅读全文
posted @ 2017-03-01 15:07 马在路上 阅读(228) 评论(0) 编辑
摘要: 本篇主要讲解Alamofire中错误的处理机制 前言 在开发中,往往最容易被忽略的内容就是对错误的处理。有经验的开发者,能够对自己写的每行代码负责,而且非常清楚自己写的代码在什么时候会出现异常,这样就能提前做好错误处理。 Alamofire的错误封装很经典,是使用swift中enum的一个典型案例。阅读全文
posted @ 2017-02-27 16:02 马在路上 阅读(1687) 评论(0) 编辑
摘要: 尽管Alamofire的github文档已经做了很详细的说明,我还是想重新梳理一遍它的各种用法,以及这些方法的一些设计思想 前言 因为之前写过一个AFNetworking的源码解读,所以就已经比较了解iOS平台的网络框架是怎么一回事了。 和`AFNetworking`有很多相同的地方,然而,这些相同阅读全文
posted @ 2017-02-23 09:41 马在路上 阅读(1638) 评论(2) 编辑
摘要: 这是我认为的一些重要的知识点进行的总结。 1.图片编码简介 大家都知道,数据在网络中是以二进制流的形式传播的,那么我们该如何把那些1和0解析成我们需要的数据格式呢? 说的简单一点就是,当文件都使用二进制流作为传输时,需要制定一套规范,用来区分该文件到底是什么类型的。 文件头有很多个,我们在这里就介绍阅读全文
posted @ 2017-01-24 16:50 马在路上 阅读(604) 评论(0) 编辑
摘要: 第十一篇 前言 我们知道 是用来管理图片下载的,但我们平时的开发更多的是使用 和`UIButton`这两个控件显示图片。 按照正常的想法,我们只需要在他们的分类中,通过 把图片下载下载之后,再进行赋值就行了。但这样的设计并不是最好的设计, 我们在准备提供一项功能的时候,应该要尽可能的弄明白这个功能的阅读全文
posted @ 2017-01-23 14:23 马在路上 阅读(707) 评论(2) 编辑
摘要: 第十篇 前言 我们先看看 主文件的组成模块: 可以看出来,每个模块即独立又相对关联,当最后拼接出 的时候,我们就可以利用它来做一些有意思的事情。 本篇就主要讲解其中的一个使用场景:批量图片下载。记得之前有一位同学有这样的开发需求:他们公司要做一个漫画APP,漫画都是由图片组成的,每一个本漫画由很多章阅读全文
posted @ 2017-01-22 15:38 马在路上 阅读(145) 评论(2) 编辑
摘要: 第九篇 前言 是`SDWebImage`中最核心的类了,但是源代码确是非常简单的。之所以能做到这一点,都归功于功能的良好分类。 有了 这个基石,我们就能做很多其他的有意思的事情。比如给各种view绑定一个URL,就能显示图片的功能,有了Options,就能满足多种应用场景的图片下载任务。 读源码既能阅读全文
posted @ 2017-01-20 17:04 马在路上 阅读(413) 评论(0) 编辑
摘要: SDWebImage源码解读之SDWebImageDownloader 第八篇 前言 这个类非常简单,作者的设计思路也很清晰,但是我想在这说点题外话。 如果有人问你:你怎么看待编程这件事?你怎么回答。这个问题是我在看这个类的时候,忽然出现在我脑子中的。我突然意识到,其实不管是函数还是属性,他们都是 阅读全文
posted @ 2017-01-09 16:10 马在路上 阅读(1495) 评论(0) 编辑
摘要: 关于Swift中的各种函数的使用的总结 前言 时间久了,好多东西我们就会慢慢忘记,在这里总结一下Swift中函数的使用原则,把大部分的函数使用技巧用代码示例来做了演示,但是如果想提高,还是要多多思考才行 1.参数名 函数默认会带参数名,如果不想显示参数名,可以使用下划线_。 func createF阅读全文
posted @ 2017-01-08 16:19 马在路上 阅读(260) 评论(1) 编辑
摘要: 第七篇 前言 本篇文章主要讲解下载操作的相关知识, 的主要任务是把一张图片从服务器下载到内存中。下载数据并不难,如何对下载这一系列的任务进行设计,就很难了。接下来我们一步一步的分析作者在开发中的思路和使用到的技术细节。 NSOperation 想必大家都知道,为了让程序执行的更快,我们用多线程异步的阅读全文
posted @ 2017-01-04 11:58 马在路上 阅读(487) 评论(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 马在路上 阅读(316) 评论(0) 编辑
摘要: 本文的主要内容来自 "这里" 前言 做iOS开发的朋友,对OC肯定非常了解,那么大家有没有想过OC中 ,`NSObject NSString`这些对象是怎么封装的?接下来我们就使用C语言来一部一部的实现这个封装。 Object对象 首先我们先封装一个 对象,我们来分析一下: 如果使用C来封装对象,我阅读全文
posted @ 2016-12-26 15:13 马在路上 阅读(529) 评论(0) 编辑
摘要: 前言 前段时间装mysql,就遇到了 的错误,网上好多方法都过时了,下边是我的解决方法 原因 这是因为苹果在OS X 10.11中引入的SIP特性使得即使加了sudo(也就是具有root权限)也无法修改系统级的目录,其中就包括了/usr/bin。要解决这个问题有两种做法:一种是比较不安全的就是关闭S阅读全文
posted @ 2016-12-21 09:58 马在路上 阅读(776) 评论(0) 编辑