39、打通前端与原生的桥梁:JavaScriptCore 能干哪些事情

你好,我是戴铭。 今天这篇文章是原生与前端共舞模块的第一篇,我来跟你聊聊前端和原生之间的桥梁 JavaScriptCore,看看它是什么、能做哪些事儿。 总结来说,JavaScriptCore 为原生编程语言 Objective-C、Swift 提供...

iOS开发高手课

38、热点问题答疑(四)

你好,我是戴铭。今天这篇答疑文章,我要针对近期留言中的热点问题,进行一次集中解答。 目前,我们专栏已经更新完了基础篇、应用开发篇和原理篇3大模块的内容。其中,原理篇的内容,因为涉及到的都是底层原理,比如系统内核XNU、AOP、内存管理和编译等,学习起...

iOS开发高手课

37、如何编写 Clang 插件

你好,我是戴铭。今天,我和你分享的主题是,如何编写 Clang 插件。 Clang 使用的是模块化设计,可以将自身功能以库的方式来供上层应用来调用。比如,编码规范检查、IDE 中的语法高亮、语法检查等上层应用,都是使用 Clang 库的接口开发出来的...

iOS开发高手课

36、iOS 是怎么管理内存的

你好,我是戴铭。今天,我来和你聊聊 iOS 是怎么管理内存的。 不同的系统版本对 App 运行时占用内存的限制不同,你可以利用我在第14篇文章中提到的方法,去查看不同版本系统对App占用内存的具体限制是多少。另外,系统版本的升级也会增加占用的内存,同...

iOS开发高手课

35、libffi:动态调用和定义 C 函数

你好,我是戴铭。 在 iOS 开发中,我们可以使用 Runtime 接口动态地调用 Objective-C 方法,但是却无法动态调用 C 的函数。那么,我们怎么才能动态地调用 C 语言函数呢? C 语言编译后,在可执行文件里会有原函数名信息,我们可以...

iOS开发高手课

34、iOS 黑魔法 Runtime Method Swizzling 背后的原理

你好,我是戴铭。 提到Object-C中的Runtime,你可能一下就想到了iOS的黑魔法Method Swizzling。毕竟,这个黑魔法可以帮助我们在运行时进行方法交换,或者在原方法执行之前插入自定义方法,以保证在业务面向对象编程方式不被改变的情...

iOS开发高手课