从 Accessibility 说到自动化测试

Accessibility

iOS 以及其他苹果设备都内置了 Accessibility 的相关功能。借助这些功能,API,以及开发者工具,iOS 为每位用户(包括有特殊需求的用户)提供了卓越的体验。其中有一项比较特殊的功能 VoiceOver ( Settings-General-Accessibility-VoiceOver ), 用于盲人和弱视用户的屏幕阅读器。

Accessibi......

移动端离线包发布方案

最近做了一次关于移动端 web app 更新方案的分享,这篇文章基于这次分享展开。

keynote 下载: WepAppRelease.key

动态发布

现在 web 页面在移动端的地位越来越高,大部分主流 App 采用 native + webview 的 hybrid 模式,加载远程页面受限于网络,本地 webview 引擎,经常会出现渲染慢导致的白屏现象,体验很差,于是离线包方案应运......

移动端模块化架构设计

这篇文档以 iOS 开发为例,老项目开发中一般存在一些弊端:

耦合严重,互相引用,状态无管理随处可修改

耦合强导致的冲突问题不好管理

实现较臃肿,各种功能类的代码混合在一起

无法快速响应业务变化,比如添加或者删除一个功能,影响面较广

重复的功能实现,无复用且影响包大小

内存及多线程问题

所以,需要一个架构来保证稳定高效的协同开发,对代码进行有效的复用,有助于持续集成及按......

开源库 Block Tracker 学习

修改 selector IMP 映射来 hook 方法在开发中很常见,但是 hook 一个 block 实现以及使用场景都较为稀有。最近,腾讯星开源了一个 hook block 的方案 Block Tracker , 使用上看起来如下:

- (void)viewDidLoad {

[super viewDidLoad];

// Begin Track

BTTracker *tracker =......

导航栏切换库 KMNavigationBarTransition

通过导航栏来进行视图切换是 App 最基础的功能,除去定制 Custom Transition 以外,大部分都通过 push 以及 pop 来进行视图的入栈,出栈。

通常使用系统默认的展示方式没有什么问题,但是上下级视图的导航栏颜色不一致时,交互体验就不太友好,比如:

- (void)viewWillAppear:(BOOL)animated {

[super viewWillAppear......

iOS 内存监控分析

概述

最近有在看一些内存监控开源库的实现,所以有做引用和总结。

这篇文章描述了关于内存监控知名开源库的一些实现思路,使用方式以及优缺点等。

FBMemoryProfiler循环引用

Objective-C 使用引用计数去管理内存和释放不使用的对象。内存中的任何一个对象都可以持有(retain)其他的对象,只要前面的对象需要它,对象就会一直保持在内存中。查看这个的一个方法是这个对象持有其他......