摘要: 1. 源码变换 第一章我们提到过,CLAS的本质是对源码做一次非常简单的变换(有些文章里称作变形),即Source Source Transformation,将打点代码精确地插入到目标函数的首部,保存到临时文件,代替原始文件传递到Clang进行编译。这个变换过程对于Clang的编译流程没有侵入,保 阅读全文
posted @ 2017-09-05 18:45 dechaos 阅读(680) 评论(0) 推荐(0) 编辑
摘要: 1. 配置LLVM和Clang 在这篇文章里,我们会基于上一篇所述的方案进行展开,详细讲解如何从0开始创建一个基于Clang LibTooling的编译器前端工具。在开始之前,我们假设你已经基本了解何为抽象语法树AST,我们后面的所有内容都是基于对AST的解析完成的。如果不了解AST,请移步官方文档 阅读全文
posted @ 2017-08-24 16:19 dechaos 阅读(1253) 评论(0) 推荐(0) 编辑
摘要: 1. 手动打点的弊端 在很多ios工程师的日常工作中,不但要对接产品提出的功能性需求,还会收到产品出于数据统计分析需求目的而提出的附带的隐形需求:统计打点。大多数公司的基础框架层都会对统计打点功能做高级封装,工程师只需要在某个操作被触发的时候在处理的方法内加入一行函数调用即可完成,例如: 这个看起来 阅读全文
posted @ 2017-08-23 09:40 dechaos 阅读(1380) 评论(0) 推荐(1) 编辑
摘要: ObjC如何通过runtime修改Ivar的内存管理方式 为什么要这么做? 在iOS 9之前,UITableView(或者更确切的说是 UIScrollView)有一个众所周知的问题: 苹果将 delegate 的内存修饰符声明为了 ,这是 MRC 时代防止循环引用的不二法门。但是到了 ARC 时代 阅读全文
posted @ 2017-07-27 18:02 dechaos 阅读(451) 评论(0) 推荐(0) 编辑