-
iPhone/iPad AutoLayout 框架 Kirov 架构设计
架构设计Kirov 的能力非常强大,可以让工程师以最快速度还原设计稿,一次编码同时适配 iPhone/iPad 的不同比例设计,同时它非常的轻量化,支持绝对布局与相对布局以及自动适配子视图。 核心代码设计基准整体布局的核心来源于通用抽象出来的设计基准类KirovDesignBasic,其负责承接外部使用者填充进来的设计稿基准值: 123456789101112131415161718 …
-
洋葱学园 iOS 端组件化重构之路[二]-实施方案
背景基于洋葱学园 iOS 端组件化重构之路[一]-现状梳理 得出的结论与方案,需要验证方案的可行性及实施成本,设计完整架构图和演示工程,包括后续持续集成的改造思路等。 实施目标 中间件的方案,产出完整调度能力的中间件Demo,包含下沉依赖关系演示 列出现有功能的基于中间件改造成本 如何梳理职能范围,拆分力度如何确认(依赖链是否保持单一) 设计完整架构图,确保双端都可基于组件的独立运行单元测试、 …
-
洋葱学园 iOS 端组件化重构之路[一]-现状梳理
背景当前,洋葱学园 iOS 端工程的组件化水平过低,在影响工程师开发效率的同时,又难以兜住持续集成的影响范围,不利于整体工程的高质量建设,已无法满足日益增长的工程预期与精细化控制的需求。 现存问题如下 缺乏组件必要的独立运作能力 缺乏统一中间件进行调度 无法进行单元测试,回归测试成本高 组件间依赖链紊乱,维护成本高 组件化颗粒度过粗,服务下沉不达标,多端引用成本高 目标收益我们期望组件化重 …
-
iOS & macCatalyst 混编应用实践
背景需求开发一款通用的 macAPP 来辅助 DSL 项目的快速调试,要求拥有与移动端完全相同的渲染效果,所以需要从 iOS 端移植 DSL 渲染引擎的代码到 macOS 系统上运行 项目搭建搭建的总体流程与创建一个 iOS 别无二致,需要选择 macCatalyst 模式运行(M1设备选择Rosetta 模式运行),唯一需要注意的点是在PROJECT里勾选 macCatalyst,让 xco …
-
DSL Native+ 动态化方案设计
为什么要有动态化? 应“变”:随着互联网红利的消失,整个移动市场的关注从“流量”转成了“留量”,大部分的移动产品也都告别了初期的抢占市场,对某个业务领域的精细化打磨、避免 App 发布漫长的周期,在出现问题时还能即时对线上进行中止血,成为了所有业务的基本诉求。 提“效”:动态化往往和跨端化一桌而谈,如何在“变”的基础上还能提升 iOS/Android 两端,甚至 H5 M Site …
-
基于 Clang 的 Xcode 编译器插件开发
LLVM & Clang 官方文档 Clang 是作为常规 LLVM 版本的一部分发布的,你可以从 https://LLVM.org/releases/下载版本。 1.下载LLVM工程1git clone git@github.com:llvm/llvm-project.git 其中包含 LLVM (release notes) Clang (release notes) clang …
-
iOS 端启动页黑屏解决方案
问题背景目前 iOS 端应用在安装后概率性会出现黑屏问题,主要表现为某次安装(有些设备是100%必现)后,每次启动时,在出现启动图之前都会出现一段持续 1 ~ 2s 的黑屏现象。这种现象并不是每个用户都会遇到,但是一旦在某次安装时出现,那么在未卸载的这段时间内,每次启动都会遇到该问题 分析报告出现黑屏的原因猜测 启动阶段耗时任务导致阻塞了UI线程的加载 系统对启动图片缓存导致 启动图尺寸问题 …
-
为 ReactiveCocoa 提供可独立区分延迟执行和间隔执行时间的定时器扩展
为 RAC 定时器提供一个可独立区分延迟执行和间隔执行时间的定时器扩展 …
-
iOS13 及以上系统的应用进程后台保活
最近在处理一项应用稳定性相关的问题,iOS 应用进程后台保活,记录一下解决问题的思路和方案 …
-
dispatch_once 为什么可以保证只执行一次?
想尝试写一个面试回答的系列,这是第一篇。 …