05 2019 档案
摘要:BlocksKit 对 oc语言的功能层、UI层进行了大量的适配,使得oc能够复合函数式编程的风格; 是oc语言的函数式编程风格改造; 将函数式风格的BlocksKit API解释为原生的功能调用; 对系统API的block方式调用的高度封装, 4、BlocksKit目录结构 BlocksKit代码
阅读全文
摘要:经常发现在一些需要使用消息转发而创建代理类时, 不同的程序员都有着不同的使用方法, 有些采用继承于NSObject, 而有一些采用继承自NSProxy. 二者都是Foundation框架中的基类, 并且都实现了<NSObject>这个接口, 从命名和文档中看NSProxy天生就是用来干这个事情的.
阅读全文
摘要:一、静态语言+动态库的形式 静态语言+动态库的形式使用的模式是面向com编程; 每一个动态库对应一个com组件; 动态库通过网络+配置文件的形式动态部署; 支持模块和功能级别的动态升级和替换; 对主体功能无法提供维护; 二、动态语言+动态库: 除了能够提供模块级别的替换和动态升级,还能够提供代码(函
阅读全文
摘要:编译器一次编译,特定平台直接可执行; 解释器一次开发,所有平台每次执行都需要对源码逐行解释。 虚拟机将源码转化为虚拟机指令,虚拟机指令的执行调用cpu执行。
阅读全文
摘要:意义明确的东西不需要解释;只有抽象和含糊的东西才需要解释。 一、解释的含义 语言的灵活性:动态、多态 是对由语言的灵活性产生的(抽象类型、动态类型)多样性和不确定性的的解释; 只有对这些多态、动态做出合理的解释才能有正确的行为; 这种解释更多是多态和动态函数调用的解释机制: id objc_msgS
阅读全文
摘要:Calling a virtual function is slower than calling a non-virtual function for a couple of reasons: First, we have to use the *__vptr to get to the appr
阅读全文
摘要:c++是面向对象的多态语言; oc是面向对象的动态语言; swift是面向对象、面向协议、高阶类型、函数式编程语言;
阅读全文
摘要:hook:方法拦截 以函数单元为编程对象; 在编译时或运行时进行函数单元的替代、修改、功能添加操作; 所有的操作都不是在原始编码时完成的; 函数单元作为参量、操作对象、编码对象存在于机制中; 机制: 1、回掉注册机制; 2、方法替换机制; 3、动态代理机制; 动态代理: 面向对象—对象方法拦截(一组
阅读全文
摘要:大道至简:认识的过程要抽象到极致,行动的过程要简单有效
阅读全文
摘要:信号和能量在一定边界内的流动、传递、控制、存储、表达。
阅读全文
摘要:硬修复: 直接修改工程源码,重新发版; 冷修复: 打补丁包,使用动态库和hook技术,在程序启动时完成问题代码修复;案例:iOS逆向工程; 特征:不修改原始代码、补丁发布、目前不支持动态发布; 热修复: 可执行文件内直接继承热修复启动机制; 程序启动后热修复引擎动态检查家在补丁包,完成动态hook;
阅读全文
摘要:http://bbs.iosre.com/t/ios/12432
阅读全文
摘要:将值域与控件域一同提升为rx的monand域,然后进行绑定。 类型提升。 在之前的文章样例中,所有的绑定都是单向的。但有时候我们需要实现双向绑定。比如将控件的某个属性值与 ViewModel里的某个 Subject属性进行双向绑定: 这样当 ViewModel里的值发生改变时,可以同步反映到控件上。
阅读全文
摘要:第一个层次 人性: 1、做正确的事情; 2、不挣不该挣的钱; 3、稳健投资,等待;像狼一样的耐心; 4、要有自己的观点和主见;不要依靠微博和媒体信息作出关键的判断。 第二个层次: 态势:态与势要分别作出表述;态是否稳态、势发展能量; 大局观与趋势把握; 外部环境; 空间; 趋势,稳态结构; 第三个层
阅读全文
摘要:1.1、问题域与解答域 1.1.1、什么是DSL? DSL(Domain-Specific Language)全称领域专用语言,就是专门用户特定领域的语言,看着概念觉得挺高大上的,其实很简单,就是专门用于某一个领域使用的语言。举个例子,我们在设置页面样式时,就经常使用CSS样式,那么这CSS语言就是
阅读全文
摘要:通用编程语言面向的是计算机通用功能: 即数据、计算、资源管理及数据与计算的组合方式; 数据与计算、计算与计算的组合方式是通用语言的问题域,是通用编程语言的在计算机硬件的基础上对问题解决通用描述方式; 和任何计算机和基础描述方式以外的问题域没有关系; 是在编程思想基础上对计算机和数据的直接或间接抽象;
阅读全文
摘要:DSL的本质是使用通用和专用语言构建领域的半成品; 实际上是构建了一个世界观、小宇宙的半成品; 这个半成品包含领域的基本要素、联系方式和基本运行规律; 开发者使用这个半成品平台进行开发能达到事半功倍、开发效率大大提高的效果。 使用这个dsl技术能够使用专业的技术进行直观的应用构建,这种构建基于声明式
阅读全文
摘要:Layout When the renderer is created and added to the tree, it does not have a position and size. Calculating these values is called layout or reflow.
阅读全文
摘要:先来看这幅经典的图: https://juejin.im/entry/590801780ce46300617c89b8 renderObject相当于iOS 的view renderlayer完成了一次模拟合成: 将在合成时无需特殊处理几个renderObject整合成一个renderlayer管理
阅读全文
摘要:1、世界的本质是算法? 2、系统原本? 3、数学与算法 数学关心的是:输入、输出,因果联系,关键边界的控制; 算法是数学基础上每一步变化的精准模拟。 数学是对事物存在和运行的描述; 算法是对事物存在和运行的模拟; 数学的抽象级别更高; 算法更注重细节和步骤; 数学是微积分的概念和结果; 算法是积分每
阅读全文
摘要:https://developer.apple.com/library/archive/documentation/GraphicsImaging/Conceptual/OpenGL-MacProgGuide/opengl_intro/opengl_intro.html 一、GPU与CPU CPU是
阅读全文
摘要:一、一条业务pipeline: 一个连接核心:coreanimation 二、两个进程: 1、app进程; 2、render进程; 首先,由 app 处理事件(Handle Events),如:用户的点击操作,在此过程中 app 可能需要更新 视图树,相应地,图层树 也会被更新。 其次,app 通过
阅读全文
摘要:一、触摸事件派发与视图绘制打包 __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION__ __dispatchPreprocessedEventFromEventQueue __CFRUNLOOP_IS_CALLING_OUT_TO_AN_
阅读全文
摘要:https://juejin.im/entry/590801780ce46300617c89b8 渲染 这张很经典的图许多人都看过,其中的概念大家应该都很熟悉,也就是这么几个步骤:js修改dom结构或样式 -> 计算style -> layout(重排) -> paint(重绘) -> compos
阅读全文
摘要:作者:谷宝剑链接:https://www.zhihu.com/question/264592475/answer/283852178来源:知乎著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。 仅从渲染速度上看,我个人理解目前看还是原生渲染比较有优势。 原生的渲染方式: view-
阅读全文
摘要:dom是结构化的文本信息的抽象,是结构化的文本信息在内存中的表示 是操作结构化文本信息的api。 Follow: Follow Follow React attacks us with the virtual DOM right away, on the main page. This featur
阅读全文
摘要:React的核心机制之一就是可以在内存中创建虚拟的DOM元素。React利用虚拟DOM来减少对实际DOM的操作从而提升性能。 JSX简介 JSX就是Javascript和XML结合的一种格式。React发明了JSX,利用HTML语法来创建虚拟DOM。当遇到<,JSX就当HTML解析,遇到{就当Jav
阅读全文
摘要:基于js语言的UI(组件)管理库 +数据+交互+组织 相当于iOS的uikit(UIView)
阅读全文
摘要:稳,wěn,由禾和急组成。其意为象禾苗生长一样,不知不觉,不急不躁。 (形声。从禾,隐省声。“禾”与粮食有关,有了粮食,心就安定了。本义:安定,平稳) 1、不赚不确定的钱;或者说不确定的钱只能以小博大; 2、稳定的投资结构:金字塔结构; 3、稳定的投资形态:形态趋于稳定后再做投资决定; 4、稳定的心
阅读全文
摘要:最适合做 GUI 的是 DSL 或者 XML(以及 XML 的扩展)之类的标记语言,而不是编程语言。 例如 Qt 的 QML,Android 的 XML 或者 WPF 的 XAML 以及大家都再熟悉不过的 HTML/CSS,包括 JavaFX 也有 FXML。 一门编程语言如果想更适合定义界面,那么
阅读全文
摘要:http://taligarsiel.com/Projects/howbrowserswork1.htm The browser's high level structure The browser's main components are (1.1): Figure 1: Browser mai
阅读全文
摘要:1、DSL系统:UI领域特定语言 html markdown; 与平台无关,只与通用UI领域有关; 2、平台语言系统(通用语言系统) UI概念在平台和通用语言中的表示。 一、信息表达: 基本信息:文本、图片、输入框、按钮等; 复合信息:列表、组件、视图等; 二、渲染接口: 图形绘制接口; 三、布局接
阅读全文
摘要:DSL:以极其高效的方式描述特定领域的对象、规则和运行方式的语言。 需要有特定的解释器与其配合。 高效简洁的领域语言,与通用语言相比能极大降级理解和使用难度,同时极大提高开发效率的语言。 能够描述特定领域的世界观和方法论的语言。 DSL 通过在表达能力上做的妥协换取在某一领域内的高效。 而有限的表达
阅读全文
摘要:UI系统的表示与维护: 渲染单元的组织、维护、交互、解释、渲染。 UI系统在应用层连接着视图的表示,在系统层连接着视图的绘制。 一、UI的结构 树形结构 二、UI的描述: 1、UI系统或UIkit或UI开发工具箱、UI环境 依赖于UI的解释机制。 1、标记语言: html xml markdown
阅读全文
摘要:翻译自:Demystifying iOS Layout 在你刚开始开发 iOS 应用时,最难避免或者是调试的就是和布局相关的问题。通常这种问题发生的原因就是对于 view 何时真正更新的错误理解。想理解 view 在何时是如何更新的,需要对 iOS RunLoop 和相关的 UIView 方法有深刻
阅读全文
摘要:iOS使用的是事件循环+标志更新(视图)机制。 Figure 1-7 UIKit interactions with your view objects The View Drawing Cycle The UIView class uses an on-demand drawing model f
阅读全文
摘要:有部件构建出模型和系统。 系统思考是人类认识事物的高级形式。 是将一堆关联的事物作为一个整体进行认识的认识方式。 每一个系统都是一个小宇宙。
阅读全文
摘要:在 iOS 系统中,图像内容展示到屏幕的过程需要 CPU 和 GPU 共同参与。 CPU 负责计算显示内容,比如视图的创建、布局计算、图片解码、文本绘制等。 随后 CPU 会将计算好的内容提交到 GPU 去,由 GPU 进行变换、合成、渲染。 之后 GPU 会把渲染结果提交到帧缓冲区去,等待下一次
阅读全文
摘要:GPU的主要工作:图像合成、图形操作 gpu不产生图片, 只表达和处理图片、图形;
阅读全文
摘要:1、事件循环; 2、显示循环:displaylink;系统定时从gpu缓存获取图片信息显示在屏幕。
阅读全文
摘要:http://chuquan.me/2018/09/25/ios-graphics-render-principle/ 通过 图形渲染原理 一文,大致能够了解图形渲染过程中硬件相关的原理。本文将进一步介绍 iOS 开发过程中图形渲染原理。 图形渲染技术栈 下图所示为 iOS App 的图形渲染技术栈
阅读全文
摘要:一、事件的概念与事件源 二、事件的生命周期 1、事件的搜集(事件源监听、事件的产生); 2、事件派发中枢:事件池、事件循环; 3、事件路由(派发)流程; 4、事件捕获、处理; 5、事件委托处理; 目标路由阶段:寻找与事件对应的目标对象; 事件消化阶段:寻找能处理事件的函数(可能不止一个)。 三、事件
阅读全文
摘要:要素:store、reducer、dispatch/subscribe connect:将业务逻辑剥离到容器类,数据的双向绑定; 数据、操作、UI分离、命令封装 核心思想:对共享状态的维护; 核心代码: store={createStore(reducer) const reducer = (sta
阅读全文
摘要:js 类型系统的核心:元类型、原型链与内省机制 二、JS数据类型 下面就来看看JS中的数据类型,在js中定义了如下几种数据类型:大方向上分为 基本数据类型(简单数据类型) 和 引用数据类型(复杂数据类型)。今天介绍以下几种基本数据类型。 http://www.cnblogs.com/shsxt/p/
阅读全文
摘要:范畴是一系列有联系的概念的集合; 类型关乎复合 范畴论与箭头的复合有关。但是并非任意两个箭头都可以复合。一个箭头的目标对象必须与下一个箭头的源对象相同,这样的两个箭头方能复合。在编程中,我们将一个函数的返回结果传递给另一个函数。如果目标函数不能正确的解析源函数传递来的数据,程序就不会工作。首尾必须相
阅读全文
摘要:一、动态类型 变量能够类型自证的类型即为动态类型 二、基础与内置类型 三、对象与类型的关系 1、对象本身能够自证为基本类型; 2、元原型可能为一个空的集合; 3、复合对象的成员能够自证为基本类型; 4、复合类型具有成员便利的基本功能; 四、复合类型对象的引用 五、成员的归属:原型or对象 有判断支持
阅读全文
摘要:__proto__ 相当于 oc 中的 isa。 一、原型 prototype 和 __proto__ 每个对象都有一个__proto__属性,并且指向它的prototype原型对象 每个构造函数都有一个prototype原型对象 prototype原型对象里的constructor指向构造函数本身
阅读全文
摘要:js的核心概念: 原型、对象(Object)、函数(Function); 原型:路由路径上非叶子结点的对象; 对象:无序属性(包括函数)的集合; 函数:函数上下文的集合; 原型: 原型的创建、指定、修改; 数据的归属:原型?当前对象? 原型的引用:引用原型对象本身?引用原型的引用? 对象创建: 对象
阅读全文
摘要:超文本标记语言(Hyper Text Markup Language):构建网页的语言
阅读全文
摘要:(来自:http://en.wikipedia.org/wiki/Pure_function) 在计算机编程中,假如满足下面这两个句子的约束,一个函数可能被描述为一个纯函数: 给出同样的参数值,该函数总是求出同样的结果。该函数结果值不依赖任何隐藏信息或程序执行处理可能改变的状态或在程序的两个不同的执
阅读全文
摘要:一、纯函数: 函数:(只)参量依赖、解决确定、环境无修改。 函数与输入、输出、环境的关系。 二、副作用 (Side Effect)是指函数或者表达式的行为依赖于外部世界。具体可参照Wiki上的定义,副作用是指 1)函数或者表达式修改了它的SCOPE之外的状态 2)函数或者表达式除了返回语句外还与外部
阅读全文