Swift中的map、filter、reduce可以对Array、Dictionary等集合进行操作。如果你没有函数式编程经验,你可能更习惯于使用for-in遍历。这一篇文章...
Swift中的map、filter、reduce可以对Array、Dictionary等集合进行操作。如果你没有函数式编程经验,你可能更习惯于使用for-in遍历。这一篇文章...
这篇文章将介绍git restore和git switch两个命令。 想要了解为什么新增了git restore和git switch命令,需先介绍下git checkout...
这篇文章将介绍如何在视图的背景上绘制重复的 pattern,为多个layer绘制一个阴影。 这篇文章基于前两篇文章CoreGraphics系列一:path[https://g...
上一篇文章CoreGraphics系列一:path[https://github.com/pro648/tips/blob/master/sources/CoreGraphi...
Core Graphics 框架也称为 Quartz 2D,是基于 Quartz 的高级渲染引擎,它提供了底层轻量级 2D 渲染引擎,可以进行高保真输出。 Quartz 2D...
编写代码时需注意是否产生了循环引用,因此就产生了什么时候使用weak、unowned问题?这篇文章将介绍 Swift 中的strong、weak、unowned的区别。 1....
协议(Protocol)是 Swift 的基础功能。在 Swift 的标准库中起着主导作用,并且是一种常见的抽象方法。Protocol 提供了与其他语言类似的接口功能。 这篇...
当需要执行异步操作,或同步多个操作时,块(Block)会非常有用。这一篇文章将介绍 Block 的本质。如果你对 block 还不了解,推荐先查看Block的用法[https...
上一篇文章分类category、load、initialize的本质和源码分析[https://github.com/pro648/tips/blob/master/sour...
这篇文章介绍分类category、load、initialize的本质,并分析其源码。 1. 分类 category 随着需求的演进,类会遇到一些无法处理的情况,应如何扩展已...
这篇文章介绍KVC、KVO的本质。如果你对KVC、KVO不了解,推荐先查看其用法:KVC和KVO学习笔记[https://github.com/pro648/tips/blo...
二分查找是最高效的算法之一,时间复杂度是O(log n)。与平衡的二叉搜索树复杂度一样。 想要使用二分查找,需满足以下条件: 集合必须能够在恒定时间查找任意索引的值。也就是集...
上一篇文章二叉搜索树 Binary Search Tree[https://github.com/pro648/tips/blob/master/sources/%E4%BA...
二叉搜索树(Binary Search Tree,简称BST)也称为二叉查找树、有序二叉树(Ordered Binary Tree),或排序二叉树(Sorted Binary...
上一篇文章树 Tree 基本信息及实现[https://github.com/pro648/tips/blob/master/sources/%E6%A0%91%20Tree...
树(Tree)是一种很重要的数据结构,在软件开发的多方面都有使用: 表示层级结构。计算机语言的抽象语法树。解析人类语言的树。XML 和 HTML 文档对象模型。处理 JSON...
这篇文章将介绍如何使用UIVisualEffectView实现 iOS 系统中各种模糊效果(blur effect)、鲜艳度效果(vibrancy effect),以及模糊效...
队列(Queue)数据结构是先进先出(FIFO,first-in, first-out)的线性表,先进入队列的元素,最先被移除。队列适用于移除顺序需与添加顺序保持一致的情况。...
链表(Linked list)是一种常见的基础数据结构,是一种线性表,但并不会按线性的顺序存储数据,而是在一个节点里存储下一个节点的指针。由于无需顺序存储,链表在插入时复杂度...
栈(Stack)又称为堆栈、堆叠,它其实有三种含义,适用于不同场合,很容易混淆。这篇文章主要介绍 stack 在数据结构方面的含义。 1. 数据结构栈 Stack 是计算机科...