01 2019 档案
摘要:A blog about Core Animation and other iOS graphics frameworks. https://www.calayer.com/
阅读全文
摘要:矢量图、gpu直接使用、占用内存小 What Shape Layers Are Shape layers are layers capable of defining shapes as vectors. Because they’re defined as vectors, they are re
阅读全文
摘要:例如:我们新建一个SubLayer类继承自CALayer,则在SubLayer.m中重写此方法。如下: + (id)defaultValueForKey:(NSString *)key { if ([key isEqualToString:@"backgroundColor"]) { return
阅读全文
摘要:Transactions are CoreAnimation's mechanism for batching multiple layer- tree operations into atomic updates to the render tree. Every modification to
阅读全文
摘要:动画的定义:视图+时间+空间+速度 视图信息的时空变换; 视图组的按时间逐帧展示; Core Animation 类的继承关系图 Core Animation 类的继承关系图 各类常用属性 CAMediaTiming:CALayer和Core Animation都实现了这个协议,它模拟了一个定时系统
阅读全文
摘要:1、语言与系统; 2、架构与机制; 3、性能:cpu、gpu、io、缓存、内存;性能监测工具; 4、知名开源库;
阅读全文
摘要:理解的核心是理清:application、render server、opengl、core animation、gpu、显示器的关系。 本文将从 OpenGL 的角度结合 Apple 官方给出的部分资料,介绍 iOS Rendering Process 的概念及其整个底层渲染管道的各个流程。 相信
阅读全文
摘要:Core Animation Pipeline 流水线 在 iOS上,动画和视图的渲染其实是在另外一个进程做的(下面我们叫这个进程 render server),在 iOS 5 以前这个进程叫 SpringBoard,在 iOS 6 之后叫 BackBoard。 显示逻辑 1、CoreAnimati
阅读全文
摘要:- (void)stroke Draws a line along the receiver’s path using the current drawing properties. - (void)fill Paints the region enclosed by the receiver’s
阅读全文
摘要:透明度与图层混合相关,影响到图片绘制的效率。 hidden 此属性为 BOOL 值,用来表示 UIView 是否隐藏。关于隐藏大家都知道就是让 UIView 不显示而已,但是需要注意的是: 当前 UIView 的所有 subview 也会被隐藏,忽略 subview 的 hidden属性。UIVie
阅读全文
摘要:So, shouldRasterize will not affect the green/red you see using Instruments. In order to have everything green, you'll need to not use transparency an
阅读全文
摘要:Core Animation是对OpenGL ES的Objective-C封装,具有与OpenGL ES几乎等价的高性能,却隐藏了OpenGL ES的复杂性。 https://www.cnblogs.com/feng9exe/p/6723056.html https://www.cnblogs.co
阅读全文
摘要:重开一个环境(内存、资源、上下文)来完成(部分)图片的绘制 指的是GPU在当前屏幕缓冲区以外新开辟一个缓冲区进行渲染操作 意为离屏渲染,指的是GPU在当前屏幕缓冲区以外新开辟一个缓冲区进行渲染操作。 红色代表GPU需要做额外的工作来渲染View,绿色代表GPU无需做额外的工作来处理bitmap。 U
阅读全文
摘要:渲染是抽象到具体的过程; 抽象:图片信息的描述(比如一条线:两个端点的位置、线粗、颜色等特征); 具体:依据抽象信息得到的可视图片(绘制过程)。 渲染是中文翻译的问题,有种添油加醋的感觉。直意就是交与 呈现的意思。把内存里的图形图像信息以输出设备(显示器)能够识别的格式呈现出来。 引用我上图形学的时
阅读全文
摘要:变量:输入数据、结果、辅助数据; 计算:逻辑步骤、遍历; 状态:当前的处理环节;上下文切换; 控制:遍历、递归、并发; 数据结构工具:
阅读全文
摘要:卡顿产生的原因和解决方案 在 VSync 信号到来后,系统图形服务会通过 CADisplayLink 等机制通知 App,App 主线程开始在 CPU 中计算显示内容,比如视图的创建、布局计算、图片解码、文本绘制等。随后 CPU 会将计算好的内容提交到 GPU 去,由 GPU 进行变换、合成、渲染。
阅读全文
摘要:DTCoreText 、WKWebView 、UIWebView的比较 HTML->View 数据解析: WebCore:排版引擎核心,WebCore包含主要以下模块:Loader, Parser(DOM,Render), Layout,Paint。 是脚本语言,需要逐句解析出来,然而DOM/CSS
阅读全文
摘要:tcp的三次握手:通信的本质:通信通知与信息交换
阅读全文
摘要:monad是高阶抽象类型; 包含类型构造器; monad抽象的核心是类型封装和类型转化(map)。 实现monad的的类型必须实现(基础)类型的封装和类型转化的功能; 在此基础上实现其他的功能(基本依赖于map); 实现类型的衍生功能依赖于map的实现;
阅读全文
摘要:什么是Monad? trait Monad[+T] { def flatMap[U]( f : (T) => Monad[U] ) : Monad[U] def unit(value : B) : Monad[B] } Monads 就是一个values的容器,并且这个“容器”必须有一个flatMa
阅读全文
摘要:简介 2014年,苹果公司在WWDC上发布Swift这一新的编程语言。经过几年的发展,Swift已经成为iOS开发语言的“中流砥柱”,Swift提供了非常灵活的高级别特性,例如协议、闭包、泛型等,并且Swift还进一步开发了强大的SIL(Swift Intermediate Language)用于对
阅读全文
摘要:For the longest time now, I thought that the two functions above were the same. But in actuality, while they may do exactly the same thing between ope
阅读全文
摘要:那么有什么因素会导致代码运行缓慢呢?当您在编写代码并选择架构的时候,深刻认识到这些架构所带来的影响是非常重要的。我将首先谈一谈:如何理解内联、动态调度与静态调度之间的权衡,以及相关结构是如何分配内存的,还有怎样选择最适合的架构。 内存分配 (1:02) 对象的内存分配 (allocation) 和内
阅读全文
摘要:类型擦除 但是在使用关联类型的时候需要注意当声明一个使用了关联属性的协议作为属性时,比如下面的代码: class stateDelegate<T> { var state: T var delegate: HTNState } <> { varvar 先会提示 no initializers 的错误
阅读全文
摘要:泛型和 Any 类型 这两个类型看起来很相似,但是一定要小心两者的区别。他们区别在于 Any 类型会避开类型的检查,所以尽量少用最好不用。泛型一方面很灵活一方面也很安全,下面举个例子感受下两者的区别: <T>_ -> T { //... return input; ( input: Any) ->
阅读全文
摘要:2. Webkit 源代码由三大模块组成: 1). WebCore, 2). WebKit, 3). JavaScriptCore。 WebCore:排版引擎核心,WebCore包含主要以下模块:Loader, Parser(DOM,Render), Layout,Paint。 WebKit:移植层
阅读全文
摘要:https://www.jqhtml.com/23003.html 这篇文章试着聊明白这一堆看起来挺复杂的东西。在聊之前,大家要始终记得一句话:一切前端概念,都是纸老虎。 不管是Vue,还是 React,都需要管理状态(state),比如组件之间都有共享状态的需要。什么是共享状态?比如一个组件需要使
阅读全文
摘要:在 Android 上,Square 这家公司提供了非常有名的工具: leakcanary ,来帮助开发者们在日常开发过程中就能够发现内存泄漏。但在 iOS 上呢?在 Google 的时候,我发现了两个工具,一个是这篇文章将要翻译并介绍的 Facebook 开源的三件套,另一个则是国内微信阅读团队做
阅读全文
摘要:Functional Reactive Programming (FRP) integrates time flow and compositional events into functional programming. This provides an elegant way to expre
阅读全文
摘要:Programs take input and produce output. The output is the result of doing something with the input. Input, transform, output, done. This pattern is ea
阅读全文
摘要:To put it another way, the output at any one time is the result of combining all inputs. The output is a function of all inputs up to that time. 摘要: 1
阅读全文
摘要:【译】异步JavaScript的演变史:从回调到Promises再到Async/Await https://www.i-programmer.info/programming/theory/8864-managing-asynchronous-code-callbacks-promises-a-as
阅读全文
摘要:ReactiveX is a library for composing asynchronous and event-based programs by using observable sequences. 问题:1、回调地狱;2、逻辑分散; 传统方案:回调; 改进方案:promise; 改进方
阅读全文
摘要:响应式编程的三个层次: 1、将事件和数据抽象为流; 2、使用声明式(函数式)编程简化流的处理流程; 3、将各类输入(流)封装(抽象)为流的端口。 4、是交互式编程开发的利器; 1、基于事件和异步; 响应编程能够简化编程,它依赖于事件,代码运行的顺序不是代码行的顺序,而是和一个以上的事件有关,这些事件
阅读全文
摘要:三、既然是 non-fragile ivars,为什么 Category 不能增加成员变量? 看过一些资料,理由并不是很让人信服。我觉得并不是做不到,只是现在没有做,现在不支持。我在 Optimizing App Startup Time Video 中找到答案,我觉得是因为 Category re
阅读全文
摘要:共享可执行文件 iOS 有沙箱机制,不能跨App间共享共态库,但Apple开放了App Extension,可以在App和Extension间共间动态库(这也许是Apple开放动态链接库的唯一原因了)。 http://blog.lanvige.com/2015/01/04/library-vs-fr
阅读全文
摘要:鉴于目前动态库在iOS App中使用越来越广泛,二进制的兼容问题可能会成为一个令人头疼的问题。本文主要对比一下C++、Java、Objecive-C和Swift的二进制兼容问题。 iOS端动态库使用情况 测试环境 C++、Java、OC和Swift分别实现Foo这个基类,然后再实现Bar这个子类,m
阅读全文
摘要:1. 什么是二进制兼容 所谓“二进制兼容性”指的就是在升级(也可能是 bug fix)库文件的时候,不必重新编译使用这个库的可执行文件或使用这个库的其他库文件,程序的功能不被破坏 2. 二进制不兼容会造成什么后果 如果库A升级没有能够做到二进制兼容,那么所有依赖它的程序(或库)都需要重新编译,否则会
阅读全文
摘要:Runtime Versions and Platforms There are different versions of the Objective-C runtime on different platforms. Legacy and Modern Versions There are tw
阅读全文
摘要:响应式编程是一种面向数据流和变化传播的编程范式; 响应式编程和函数式编程的融合; 响应式编程为内核;函数式编程为工具; 流的概念先天适合函数式编程。 Some quotes from the article: Reactive programming is programming with asyn
阅读全文
摘要:应用逻辑:连接视图与业务、串联业务、业务切换、业务管理; 2.业务逻辑分类: (1)应用逻辑。 (2)领域逻辑。 http://www.cnblogs.com/easygame/p/4339948.html https://github.com/DeclarativeHub/TheBinderArc
阅读全文
摘要:绑定: UI控件 --> VM VM -> UI控件 关于mvvm:UI、数据、绑定、状态、中间变量、数据适配、数据处理; https://github.com/zzf073/LoginDemo_RxSwift。 用中间层管理复杂的UI事务、数据、状态等; 并进行相关的绑定。
阅读全文
摘要:This section deals with more theoretical aspects of types. A type system is a set of rules used by a language to structure and organize its collection
阅读全文
摘要:https://www.jianshu.com/p/fe53e5fe189d
阅读全文
摘要:ReactiveX Rx的Observable的本质就是一个Event Monad,即上下文(就是图文教程中包裹的盒子)为Event的一个Monad,这里的Event定义,可以对应语言的struct或者enum,包括了next、error和complete三个上下文即可。这里截取的是Swift语言的
阅读全文
摘要:架构视图: 结构(形式)视图:分层、核心、总线、分布 功能视图:驱动、传动、控制、处理;输入、功能(环节)、输出; 开发视图:放那里 要素、结构、交互; 影响架构的因素: 数据、时间、系统的目的性(多目的)、系统的核心(数据?)、系统的功能(多功能?) 一个系统可能可以被分解为很多子系统,每一个子系
阅读全文
摘要:MVC(Model-View-Controller),它是专门针 对交互系统提出的,所以如果我们要构建一个交互系统,那么我们就可以直接应用MVC模式,然后 在该模式所搭建的场景的启发下去发现Model、View以及Controller,在这个大的场景的指导下根 据其它的需求(模式)构建一些小的场景对
阅读全文
摘要:Architecture pattern: context + problem -> solution Architecture style: solution part of architecture pattern So architecture style is analogous to th
阅读全文
摘要:Software Architecture Architecture serves as a blueprint for a system. It provides an abstraction to manage the system complexity and establish a comm
阅读全文
摘要:Architecture Design Process The architecture design process focuses on the decomposition of a system into different components and their interactions
阅读全文
摘要:architecture⟨system⟩ fundamental concepts or properties of a system in its environment embodied in its elements, relationships, and in the principles
阅读全文
摘要:架构是系统的描述; 有系统便有架构; 所以架构是系统的模型; 另一方面,架构又是系统开发的一个指导原则和上下文。
阅读全文
摘要:What is Systems Architecture ? Systems Architecture is a generic discipline to handle objects (existing or to be created) called "systems", in a way t
阅读全文
摘要:简单的理解,就是相关的内容 模式是在某种特定的场景(context)下某个不断重复出现的问题的解决方案。 环境;上下文;来龙去脉 上下文;语境;环境 网络背景;情境;脉络 context其实说白了,和文章的上下文是一个意思,在通俗一点,我觉得叫环境更好。 Context就Context,当年非得翻译
阅读全文
摘要:模式及套路 模式:模版、样式;属于分类、识别的范围。 How are patterns obtained? Through : https://stackoverflow.com/questions/4243187/whats-the-difference-between-design-patter
阅读全文
摘要:软件架构的核心问题:怎样组织软件能更容易生成和维护解决问题的工具-业务决定架构 怎样组织软件更容易解决问题; 技术域:使用什么样的技术。 软件架构要解决的两个问题:1、代码的组织问题;2、功能的实现问题。 有两个关注点:问题怎样解决、软件怎样组织。 衡量标准:组织代码的能力、处理问题的能力。 软件及
阅读全文
摘要:软件复用的主要思想是,将软件看成是由不同功能部分的“组件”所组成的有机体,每一个组件在设计编写时可以被设计成完成同类工作的通用工具,这样,如果完成各种工作的组件被建立起来以后,编写一特定软件的工作就变成了将各种不同组件组织连接起来的简单问题,这对于软件产品的最终质量和维护工作都有本质性的改变。 软件
阅读全文
摘要:热修复:修改,修改(部分覆盖)可执行文件、修改运行时内存模型(结构)(语言动态特性); 混编:不同语言的通信机制;没有语言动态特性的要求;只有编译器、解释器的支持。
阅读全文
摘要:热更新要素:脚本语言、桥接解释器、本体动态语言。 更新: 1、可执行文件修改; 2、运行时动态语言内存模型(进程)。 修复方案: 1、可执行文件替换; 2、动态库覆盖替换; 3、脚本语言解释替换;
阅读全文
摘要:强弱类型对应赋值操作,动静类型对应多态属性; 类型的强弱对应着类型的一致性和类型转换; 类型的动静对应着类型的行为;
阅读全文
摘要:这不过是返祖罢了。正确的问题是为什么会把数据流抽象成文件。 设备-字节流-文件。 一切皆为文件,所有不同种类的类型都被抽象成文件(比如:块设备,socket套接字,pipe队列)。 文件抽象为数据流一定程度上是 Unix 造成的。 传统上,计算机上用于 IO 的设备大致可以分成两大类,块(block
阅读全文
摘要:文件抽象 fs模块是文件操作的封装,它提供了文件的读取、写入、更名、删除、遍历目录、链接POSIX文件系统操作。与其他模块不同的是,fs模块中的所有操作都提供了异步和同步两个版本,例如读取文件内容函数的异步方法:readFile(),同步方法readFileSync()。 一切皆文件 “一切皆是文件
阅读全文
摘要:输入/输出(I/O) : 是指主存和外部设备(如磁盘,终端,网络)之间拷贝数据过程 https://www.bbsmax.com/A/o75N88ZxzW/ 10.1 Unix I/O 一个Unix 文件就是一个m个字节的序列: 所有I/O设备都被模型化为文件。 而所有的输入和输出都被当做相应文件的
阅读全文
摘要:引用《Linux Kernel Development》原书里面的一句话 in Unix, everything is a file.This simplifies the manipulation of data and devices into a set of core system call
阅读全文
摘要:一、知识准备 1、在linux中,一切皆为文件,所有不同种类的类型都被抽象成文件。如:普通文件、目录、字符设备、块设备、套接字等2、当一个文件被进程打开,就会创建一个文件描述符。这时候,文件的路径就成为了寻址系统,文件描述符成为了字节流的接口3、相对于普通文件这类真实存在于文件系统中的文件,tcp
阅读全文
摘要:UNIX 操作系统的设计、用户界面、文化和演变都是建立在它的一套统一的想法和概念上。其中最重要的一点可能是“一切皆文件”,而这个概念被认为是 UNIX 的灵魂之一。 这一关键设计原则提供了一个统一的范式,用于访问各种输入输出资源:文档、目录、磁盘驱动器、CD-ROM、调制解调器、键盘、打印机、显示器
阅读全文
摘要:编程三基:cpu:算法,总线:一切皆文件;内存:数据、运行空间 原文找不到了。
阅读全文
摘要:抽象的底层都是硬件、指令集和操作系统; 高层次的抽象语言依赖于低层次的语言。 图1-5给出了现代计算系统典型的抽象层次。在抽象的最高层,算法描述解决问题的一系列步骤。然后,这些算法用高级编程语言,如C++、Python或Java,写成程序。当程序运行时,在操作系统的控制下它与其他程序共享计算资源。操
阅读全文
摘要:线程锁的本质:线程控制、线程状态控制 while if https://www.cnblogs.com/feng9exe/p/8319000.html https://www.cnblogs.com/feng9exe/p/8799312.html https://www.cnblogs.com/fe
阅读全文
摘要:功能:对kvo机制进行封装,简化使用,简化内存管理; 要素:观察者、被观察者、处理函数、 模式:注册表模式; 机制:对象创建、注册管理、内存管理、处理机制转换; 其它:注册去重; kvo的管理机制;
阅读全文
摘要:NSHashTable NSHashTable是更广泛意义的NSSet,区别于NSSet / NSMutableSet,NSHashTable有如下特性: * NSSet / NSMutableSet是对其成员的强类型引用,这些成员被通过hash方法和isEqual方法来完成哈希和对比功能 * NS
阅读全文
摘要:架构的本质: 架构的本质是构造,构造的依据是消息在结构上搞高效流通,符合构造定律; 构造的内核是消息流的流通; 信息流控制; 业务对模块起串联作用; 控制对业务起串联作用。 软件的组织:软件的和 数据流、业务流、逻辑流、抽象组团; 流之矢; 矢量原则; 有序之矢; 运动、构造、熵;时间之矢 能量、结
阅读全文