Aspect 与 消息转发

Aspects是iOS面向切面编程的第三方库, 它可以在不改变原有代码的情况下, 在任意函数之前或之后插入代码, Aspects 的实现是基于 Runtime 的消息转发机制.

阅读全文 »

[转载] JSPatch-实现原理详解

原文地址

JSPatch 是一个 iOS 动态更新框架,只需在项目中引入极小的引擎,就可以使用 JavaScript 调用任何 Objective-C 原生接口,获得脚本语言的优势:为项目动态添加模块,或替换项目原生代码动态修复 bug。

之前在博客上写过两篇 JSPatch 原理解析文章(1 2),但随着 JSPatch 的改进,有些内容已经跟最新代码对不上,这里重新整理成一篇完整的文章,对原来的两篇做整合和修改,详细阐述 JSPatch 的实现原理和一些细节,以帮助使用者更好地了解和使用 JSPatch。

阅读全文 »

原文地址

iOS Crash 治理:淘宝VisionKitCore 问题修复

本文通过逆向系统,阅读汇编指令,逐步找到源码,定位到了 iOS 16.0.<iOS 16.2 WKWebView 的系统bug 。同时苹果已经在新版本修复了 Bug,对于巨大的存量用户,仍旧会造成日均 Crash pv 1200+ uv 1000+, 最终通过 Hook 系统行为,规避此 Bug。在手机淘宝双 11 版本中已经彻底修复,Crash 跌 0。

阅读全文 »

原文地址

摘要: 今年 AppleObjective-C 运行时和链接器底层做了重大优化,包括 Swift 协议检查、Objective-C 消息发送、RetainRelease 底层优化以及 Autorelease 自动省略优化。以往开发者往往需要使用各种奇淫技巧来优化包大小,而在 2022 年的当下,Apple 从汇编代码以及编译器、链接器层面做出的优化,就能自动让 App 的包体积得到减小。

本文基于 WWDC22 - Improve app size and runtime performance 进行创作

阅读全文 »

什么是 Block, 为什么引入 Block

Block 是 Objective-C 对 Closure(闭包)的实现, 本质上是一个带有自动变量(局部变量)的匿名函数。

阅读全文 »

[转载] 软件研发的实用主义思考

原文地址

|导语 我们在以实用为目的去做事情的时候,很容易受到一些思维误区的干扰,自以为自己是追求实用的,但实际上早已经谬之千里,却不自知

阅读全文 »