一、位图、色彩空间1.1 色彩空间色彩空间(Color space)是对色彩的组织方式/表示方式。借助色彩空间和针对物理设备的测试,可以得到色彩的固定模拟和数字表示。数字表示,如Adobe RGB、sRGB、RGBA。
色彩空间并不唯...
原文链接:关于iOS离屏渲染的深入研究、iOS圆角的离屏渲染
作为一个客户端工程师,把控渲染性能是最关键、最独到的技术要点之一,如果仅仅了解表面知识,到了实际应用时往往会失之毫厘谬以千里,无法得到预期的效果。
一、先来了解iOS的...
原文,摘自 Advanced Graphics and Animations for iOS Apps (WWDC14 419,关于UIKit和Core Animation基础的session在早年的WWDC中比较多),字幕在 tr...
原文地址 译自《iOS Core Animation Advanced Techniques》
动画是Core Animation库一个非常显著的特性。这一章我们来看看它是怎么工作的。具体来说,我们先来讨论框架自动实现的隐式动画(...
Core Animation其实是一个令人误解的命名。你可能认为它只是用来做动画的,但实际上它是从一个叫做Layer Kit这么一个不怎么和动画有关的名字演变而来。
Core Animation是一个复合引擎,它的职责就是尽可能快地组...
原文链接 — AFNetworking到底做了什么?,有一些细节修改
作为一个iOS开发,也许你不知道NSUrlRequest、不知道NSUrlConnection、也不知道NSURLSession…(说不下去了…怎么会什么...
一、概述NSURLSession 在iOS7中推出,旨在替换之前的NSURLConnection
NSURLSession的使用相对于之前的NSURLConnection更简单,而且不用处理Runloop相关的东西;
暂停、停止、重...
一、现存问题目前,业内移动端日志库大多都存在以下几个问题:
卡顿,影响性能
日志丢失
安全性
日志分散
首先,日志模块作为底层的基础库,对上层的性能影响必须尽量小,但是日志的写操作是非常高频的,频繁在Java堆里操作数据容易导致G...
一、Crash概述1.1 常见Crash的类型常见的 crash 类型总结下来,分为三种:
Mach kernel exceptions:是指最底层的内核级异常。用户态的开发者可以直接通过Mach API设置thread,task,...
一、卡顿的难点时不时会收到这样的卡顿反馈:“用户A 刚才碰到从后台切换前台卡了一下,最近偶尔会遇到几次”、“用户B 反馈点对话框卡了五六秒”、“现网有用户反馈切换 tab 很卡”。
这些反馈有几个特点,导致跟进困难:
不易重现。可能...
SwiftUI 于 2019 年度 WWDC 全球开发者大会上发布,它是基于 Swift 建立的声明式框架。该框架可以用于 watchOS、tvOS、macOS、iOS 等平台的应用开发。
一、UIKit的不足从 iOS SDK 2....
Swift ABI 稳定历时5年发展,从Swift1.x发展到了Swift5.x版本,经历了多次重大改变,ABI终于稳定。
ABI 稳定就是 binary 接口稳定,意味着Swift语法基本不会再有太大的变动。也就是在运行的时候只要是...
RunLoop 是 iOS 和 OSX 开发中非常基础的一个概念,这篇文章将从 CFRunLoop 的源码入手,介绍 RunLoop 的概念以及底层实现原理。之后会介绍一下在 iOS 中,苹果是如何利用 RunLoop 实现自动释放池...
一、概述Protocol buffers (PB) 是一种语言、平台无关,可扩展的序列化数据的格式。和xml、json等数据交换格式一样,也可用于通信协议,数据存储等。
Protocol buffers 在序列化数据方面,它是灵活的...
一、简介Base64是一种用64个字符来表示任意二进制数据的方法。是一种编码方法,有自己的编码表,所以称为Base64,是因为其使用64个字符来对任意数据进行编码,同理有Base32、Base16编码。
用记事本打开exe、jpg、p...
原文链接 程序开发常见的ASCII、GB2312、GBK、GB18030、UTF8、ANSI、Latin1中文编码到底有何不同?如果你在业务中也曾经被乱码搞晕过,不妨一起探究一下。
一、字符编码概述1.1 什么是字符集编码编码是信息从...
一、时间复杂度与多项式时间
在计算机科学中,算法的时间复杂度是一个函数,它定性描述该算法的运行时间。这是一个代表算法输入值的字符串的长度的函数。时间复杂度常用大O符号表述,不包括这个函数的低阶项和首项系数。使用这种方式时,时间复杂度可...
一、概述前面所讨论算法的每一计算步骤都是确定的,而本次所讨论的概率算法允许算法在执行过程中随机地选择下一个计算步骤。在许多情况下,当算法在执行过程中面临一个选择时,随机性选择常比最优选择省时。因此概率算法可在很大程度上降低算法的复杂度...
分支限界法:广(宽)度优先搜索 + 剪枝。
一、基本思想1.1 分支限界法与回溯法与回溯法的异同
相同点:与回溯法一样,分支限界也是搜索一个解空间,而这个解空间通常组织成一棵树(常见的树结构:子集树和排列树)。
解题步骤都基本一...
回溯算法:深度优先搜索 + 剪枝。
关于回溯算法、分支限界算法:
都是一种对暴力搜索(穷举算法)中的优化算法。(关键是能准确划定问题的解空间,保证覆盖问题的全部候选解+可行解)。
对于某些计算问题而言,是一种可以找出所有(或一部...