[转载] Objective-C & Swift 最轻量级 Hook 方案
本文从一个 iOS 日常开发的
hook
案例入手,首先简要介绍了 Objective-C 的动态特性以及传统hook
方式常见的命名冲突、操作繁琐、hook
链意外断裂、hook
作用范围不可控制等缺陷,然后详细介绍了一套基于消息转发机制的 instance 粒度的轻量级hook
方案:**SDMagicHook**。
[转载] Objective-C & Swift 最轻量级 Hook 方案
本文从一个 iOS 日常开发的
hook
案例入手,首先简要介绍了 Objective-C 的动态特性以及传统hook
方式常见的命名冲突、操作繁琐、hook
链意外断裂、hook
作用范围不可控制等缺陷,然后详细介绍了一套基于消息转发机制的 instance 粒度的轻量级hook
方案:**SDMagicHook**。
[转载] 抖音研发实践:基于二进制文件重排的解决方案 APP启动速度提升超15%
启动是App给用户的第一印象,对用户体验至关重要。抖音的业务迭代迅速,如果放任不管,启动速度会一点点劣化。为此抖音iOS客户端团队做了大量优化工作,除了传统的修改业务代码方式,我们还做了些开拓性的探索,发现修改代码在二进制文件的布局可以提高启动性能,方案落地后在抖音上启动速度提高了约15%。
本文从原理出发,介绍了我们是如何通过静态扫描和运行时trace找到启动时候调用的函数,然后修改编译参数完成二进制文件的重新排布。
Diff应用:从LCS到UICollectionView
什么是Diff?
日常编程中有时候会遇到对比字符串,对比数组的情况,找出前后新旧数据的不同,可以称之为Diff。
什么是LCS?
Longest Common Subsequence 的简称,最长公共子序列。
LCS有哪些应用?
1.Git等版本控制,常用的git diff命令
2.一些对比软件,如Kaleidoscope,能进行图片、文件、文本的对比
3.Facebook iOS Snapshot Test框架,通过snapshot的方式,进行页面UI测试
4.IGListKit一个基于UICollectionView的框架,通过LCS衍生优化算法,进行UICollectionView的刷新
关于本文…
前几部分都是LCS算法的一些简单介绍,感兴趣的可以看看,也可直接看靠后的LCS算法在UICollectionView中的应用。
[转载] 基于NSURLCache的缓存实现
缓存设计应该是每个客户端程序开发所必须考虑的问题,如果同一个功能需要多次访问,而每次访问都重新请求的话势必降低用户体验。但是如何处理客户端缓存貌似并没有统一的解决方案,多数开发者选择自行创建数据库直接将服务器端请求的JSON(或Model)缓存起来,下次请求则查询数据库检查缓存是否存在。事实上iOS系统自身也提供了一套缓存机制,本文将结合URL Loading System简单介绍一下如何利用系统自身缓存设计来实现一套缓存机制来平滑的扩展图虫客户端的缓存处理。
升级到 Xcode 14.3 编译部分工程出现错误
1 | ld: file not found: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/arc/libarclite_iphoneos.a |
查到是 Xcode14 支持最低版本是 iOS 11, 然后部分库基于 arc 的支持在 Xcode14.3 被移除了, 升级到 14.3 后无法链接, 就报错了
[转载] iOS端一次视频全屏需求的实现
对于一个带有视频播放功能的app产品来说,视频全屏是一个基本且重要的需求。虽然这个需求看起来很简单,但是在实现上,我们前后迭代了三套技术方案。这篇文章将介绍这三种实现方案中的利弊和坑点,以及实现过程中积累的经验。
[转载] iOS性能优化实践:头条抖音如何实现OOM崩溃率下降50%+
iOS OOM 崩溃在生产环境中的归因一直是困扰业界已久的疑难问题,字节跳动旗下的头条、抖音等产品也面临同样的问题。
在字节跳动性能与稳定性保障团队的研发实践中,我们自研了一款基于内存快照技术并且可应用于生产环境中的 OOM 归因方案——线上 Memory Graph。基于此方案,3 个月内头条抖音 OOM 崩溃率下降 50%+。
本文主要分享下该解决方案的技术背景,技术原理以及使用方式,旨在为这个疑难问题提供一种新的解决思路。
[转载] 抖音 iOS 启动优化 - 原理篇
前言
启动是 App 给用户的第一印象,启动越慢用户流失的概率就越高,良好的启动速度是用户体验不可缺少的一环。启动优化涉及到的知识点非常多面也很广,一篇文章难以包含全部,所以拆分成两部分:原理和实战。
本文从基础知识出发,先回顾一些核心概念,为后续章节做铺垫;接下来介绍 IPA 构建的基本流程,以及这个流程里可用于启动优化的点;最后大篇幅讲解 dyld3 的启动 pipeline,因为启动优化的重点还在运行时。
[转载] 抖音 iOS 启动优化 - 实战篇
前言
启动是 App 给用户的第一印象,启动越慢,用户流失的概率就越高,良好的启动速度是用户体验不可缺少的一环。启动优化涉及到的知识点非常多,面也很广,一篇文章难以包含全部,所以拆分成两部分:原理和实战,本文是实战篇。