Swift 线程安全数组

2017-11-19
阅读 7 分钟
6.9k
有并发的地方就存在线程安全问题,尤其是对于 Swift 这种还没有内置并发支持的语言来说线程安全问题更为突出。下面我们通过常见的数组操作来分析其中存在的线程问题,以及如何实现一个线程安全数组。

iOS 多网络请求的线程安全

2017-10-17
阅读 5 分钟
8.7k
iOS 网络编程有一种常见的场景是:我们需要并行处理二个请求并且在都成功后才能进行下一步处理。下面是部分常见的处理方式,但是在使用过程中也很容易出错:

RxSwift 之变换操作

2017-10-05
阅读 5 分钟
3.1k
可能刚开始接触 RxSwift 时候,你会觉得 RxSwift 非常难懂也不容易学。其实学习每一门新知识或多或少都会出现这种情况。不过我相信认知读了前几篇文章后,你会深感 RxSwift 的强大。它在简化代码量的同时也让整个程序的逻辑变的更为清晰。

RxSwift 之过滤操作

2017-09-19
阅读 6 分钟
4.9k
在前面的基础之上接下来我会介绍一些常用的函数和实用技巧。首先,本文将会介绍那些用于对 next 事件进行过滤的操作。这些过滤操作类似于 Swift 标准库中的 filter 操作。它能在我们开始真正进行业务处理前先把那些不符合条件的过滤掉,而且这种函数式编程的范式也能开阔我们的思维。

RxSwift 之 Observable

2017-09-18
阅读 4 分钟
2.5k
在 RxSwift 中 Observable 也被称为 Observable Sequence、Sequence、Stream。Observable 会以异步的方式不断的发射事件形成事件流,并且数据也会沿着事件流进行传播。下图是事件流的图像化表示:

RxSwift 基础

2017-09-16
阅读 4 分钟
2k
在 iOS 开发过程中,我们几乎无时无刻都要面对异步事件的处理。例如,按键点击、数据保存、、音频后台播放、交互动画展示。这些事件并不具备特定时序性,甚至它们可能同时发生。

Express 实战(八):利用 MongoDB 进行数据持久化

2017-08-24
阅读 18 分钟
4.1k
毫无疑问,几乎所有的应用都会涉及到数据存储。但是 Express 框架本身只能通过程序变量来保存数据,它并不提供数据持久化功能。而仅仅通过内存来保存数据是无法应对真实场景的。因为内存本身并不适用于大规模的数据储存而且服务停止后这些数据也会消失。虽然我们还可以通过文件的形式保存数据,但是文件中的数据对于查询...

Express 实战(七):视图与模板:Pug 和 EJS

2017-08-24
阅读 9 分钟
14.6k
前面的内容大都是关于 Express 框架自身的内容,包括:Express 简介、工作原理、框架特点。在系列的最后,我们将把注意力放到 Express 框架周边工具链上。学习如果使用这些工具来拓展 Express 框架的功能。

Express 实战(六):构建 API 接口

2017-08-23
阅读 9 分钟
14.5k
在介绍了那么多 Express 核心概念之后,接下来的文章将会把注意力放在如何构建一个真实的应用上。这里我们先从构建应用 API 接口开始。从某种程度上来说几乎所有的软件应用其背后都是由一组强大的 API 驱动。

Express 实战(五):路由

2017-08-23
阅读 11 分钟
5k
作为 Express 中的最大特点之一,路由让你可以将不同的请求映射到不同的中间件中。这一章我们将会深入学习这部分的内容,另外还包括如何在 Express 使用 HTTPS 以及部分 Express 4 中的新特性等等。当然,学习过程还是通过示例应用和代码的形式进行展现的。

Express 实战(四):中间件

2017-08-23
阅读 8 分钟
4.5k
原生 Node 的单一请求处理函数,随着功能的扩张势必会变的越来越难以维护。而 Express 框架则可以通过中间件的方式按照模块和功能对处理函数进行切割处理。这样拆分后的模块不仅逻辑清晰,更重要的是对后期维护和开发非常有利。

Express 实战(三):Express 基础

2017-08-23
阅读 13 分钟
6.7k
Express 框架的初衷是为了拓展 Node 内置模块的功能提高开发效率。当你深入研究后就会发现,Express 其实是在 Node 内置的 HTTP 模块上构建了一层抽象。理论上所有 Express 实现的功能,同样可以使用纯 Node 实现。

Express 实战(二):Node.js 基础

2017-08-23
阅读 8 分钟
5.5k
在上一篇文章中,我们简单的介绍了 Node.js 。了解到它基于 JavaScript、天生异步、拥有大量的第三方类库。本文将会在之前的基础上,对 Node.js 进行更深入的介绍。其中主要内容包括:

Express 实战(一):概览

2017-08-23
阅读 9 分钟
10.4k
在很长的一段时间里,JavaScript 一门编写浏览器中运行脚本的语言。不过近些年,随着互联网的发展以及技术进步,JavaScript 迎来了一个集中爆发的时代。一个标准性的事件就是 09 年 Node.js 的横空出世。

Swift 4 JSON 解析进阶

2017-08-18
阅读 10 分钟
13.9k
在前面 JSON 解析指南中,有网友提出了在使用类继承时默认实现存在问题。这个问题触发了更多的思考和学习,对他致以最高的谢意。接下来,我就从这个问题开始进一步介绍 Swift 4 中 JSON 解析。

Swift「信号」机制概述

2017-07-01
阅读 6 分钟
6.5k
作者:Federico Zanetello 翻译:BigNerdCoding,原文链接 首先,如果你对大中枢派发(GCD)和派发队列不够熟悉的话,请先看 AppCoda 的这篇文章。 在了解了 GCD 内容后,接下来我们来看看 Swift 中的信号机制。 简介 先让我们假象一个场景:有一群作者在写作的时候必须共享一支笔来完成个人的工作。很明显在这种情形下...

Swift 4 JSON 解析指南

2017-06-26
阅读 6 分钟
16.8k
值得注意的是,官方的实现方式适用于任何 Encoder/Decoder ,例如 PropertyListEncoder 。当然如果你需要 XML 格式的内容,可以进行自定义实现。在接下来的内容中,我们将专注于 JSON 格式的解析,因为这是 iOS 开发中最常见的数据格式。

Core Animation 中的特有图层

2017-04-02
阅读 6 分钟
2.6k
在结束上文的动画综述之后,这篇文章我们来看看 Core Animation 中的另一部分 Layer。作为框架的核心内容之一,CALayer 及其子类作为视图界面的基石不仅在绘图上性能强大而且功能性亦不可小觑。当然 Layer 部分的内容非常繁杂,每一个类型都进行讲解既不现实也不高效。文章将选取几个与动画关系较为密切的图层作为切人点...

Layer Animations 综述

2017-04-02
阅读 6 分钟
2.2k
前两篇文章已经介绍了 UIView 层面的动画内容已经足够应对大多数情况,但是面对更高的性能和更大的复杂度的场景则远远不够。 所以接下来我们将视角伸向更底层的 Core Animation,看一看 iOS 动画世界的基石。

UIView 动画进阶

2017-04-02
阅读 3 分钟
3k
上一篇文章中介绍了 UIKit 中一些基础动画,这些动画足够应付普通的动画交互。但是作为开发者仅仅掌握基础用法显然是不够的,我们需要更强大的武器来应对将来可能的复杂场景。接下来我们来看看 UIView 的进阶动画:Transitions、Keyframe Animations。

UIView 动画基础

2017-04-02
阅读 4 分钟
3.1k
上次写完 iOS 动画基础部分的文章后,为了更加系统、准确的总结动画部分的知识,特地花了不少时间学习了这个方向的知识。对于开发者来说动画的实现过程是非常有趣的,而且动画会让我们的 APP 变的富有生命力。这篇文章讲介绍 UIKit 框架中的动画接口,大多数情况下这些高级接口完全能满足我们的动画实现的需求。

Swift 中“等同性”、“比较”、“哈希” 概念理解

2017-04-01
阅读 5 分钟
5.8k
最近 Google 又搞了个大新闻:成功攻破了业界广泛使用的 SHA-1 哈希算法,加上看了 MrPeak 的 a 闲聊 Hash 算法 ,所以我就去仔细看了下 Swift 中的相关内容与概念。这篇文章算是对 Swift 中对象的“等同性”、“比较”、“哈希”概念的一个简单介绍。

Core Image 实现面部识别

2017-04-01
阅读 8 分钟
2.9k
Core Image 作为功能强大 Cocoa Touch 框架自带的组件,是 iOS SDK 中不可或缺的重要组成部分。然而,大多数情况下它却总在被开发者选择性忽视。 在这篇教程中,我们将会介绍其中的面部识别功能,以及如何在开发过程中使用该功能。

任务分离:创建可测试的网络层

2017-04-01
阅读 4 分钟
2.6k
最近几年出现了很多设计良好的 iOS 开发架构,这些架构在开发人员中得到了广泛的传播和应用。虽然这些架构并不是绝对完美的但总的来说这些设计观念都非常实用,而且这些架构出发点惊人的相似:分离代码的业务逻辑和界面呈现。接下来我将结束的概念具有万金油特征,无论以后以使用何种架构开发,你都可以将其应用其中。

UITableView 协议方法中更好的 switch 使用方案

2017-04-01
阅读 3 分钟
3k
UITableView 几乎是每一个原生 App 都会使用到的控件,所以你一定对 UITableViewDataSource、UITableViewDelegate 中的代理方法很熟悉。在一些代理方法中有时候我们需要对不同的 section、row 进行分开处理,此时我们都会使用 switch 来应对。所以接下来将会介绍一种更好的 switch 使用方案。

可点击 @、# 标记文本实现

2017-04-01
阅读 6 分钟
2.5k
在社交类 APP 中 @、# 符号构成的标记文本已经形成了某种通用的意义:前者表示通知某位好友,而后者表示为某个话题或者分类。这些标记文本一般还都带有高亮显示和可点击的特点。接下来的我会创建一个 UITextView 的子类 AttrTextView 来实现上诉功能。

iOS 网络基础

2017-04-01
阅读 3 分钟
2.8k
长期以来我们在处理 iOS 中的网络通信的时候都是直接使用 OC 版 AFNetworking 或者 Swift 版 Alamofire ,但是我们竟然很少会去认真关注 iOS 中的网络基础底层内容。这同时折射出了 iOS 开发中的一个问题:iOS 开发有着丰富的组件、完善的生态、成熟的机制,这些特质让 iOS 开发的门槛低的几乎只要一台 MBP,但这也让开...

Swift闭包中的内存泄漏

2017-04-01
阅读 4 分钟
6.5k
内存泄漏在 iOS 中是永恒的话题,如果你在开发过程中不小心对待的话,那么总有一天他会以 Crash 的形式提醒你它的存在。内存泄漏不仅破坏用户体验,而且会影响性能甚至应用的安全。既然内存泄漏如此的重要,所以这篇文章在这篇文章将说一说 Swift 闭包中的内存泄漏问题。

面向协议编程

2017-04-01
阅读 4 分钟
4.5k
Swift语言由于先天的后发优势吸收了很多好的编程概念和特性,这些特性在给开发者带来新可能的同时也进一步促进了语言本身的进化。这也是经历三次Swift从入门到重学也不离不弃的原因?。Swift语言的优势和特性大抵如下:

简单二维码扫描实现

2016-12-17
阅读 5 分钟
4.9k
最早熟识二维码还是因为微信扫一扫功能。其实二维码最早的设计初衷是用于追踪工业生产中的产品并替换信息存储能力有限的条形码。不过这些年智能手机的快速普及让二维码的应用场景得到了极大的拓展,所以作为一名开发者或迟或早都将要面对二维码识别问题。在很久以前的iOS开发中这个功能不得不依靠第三方库来实现,后来Ap...