自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(7)
  • 收藏
  • 关注

原创 打造基于Clang LibTooling的iOS自动打点系统CLAS(三)

1. 源码变换第一章我们提到过,CLAS的本质是对源码做一次非常简单的变换(有些文章里称作变形),即Source-Source-Transformation,将打点代码精确地插入到目标函数的首部,保存到临时文件,代替原始文件传递到Clang进行编译。这个变换过程对于Clang的编译流程没有侵入,保证了与不同版本Clang一定的兼容性,即使Clang进行小版本升级CLAS仍然可以正常工作无需重新编译(

2017-09-05 18:51:51 421

原创 打造基于Clang LibTooling的iOS自动打点系统CLAS(二)

1. 配置LLVM和Clang在这篇文章里,我们会基于上一篇所述的方案进行展开,详细讲解如何从0开始创建一个基于Clang LibTooling的编译器前端工具。在开始之前,我们假设你已经基本了解何为抽象语法树AST,我们后面的所有内容都是基于对AST的解析完成的。如果不了解AST,请移步官方文档Introduction to the Clang AST补全基础知识,或者这篇中文文章。此外我们还需要

2017-08-24 16:25:52 1361

原创 打造基于Clang LibTooling的iOS自动打点系统CLAS(一)

1. 手动打点的弊端在很多ios工程师的日常工作中,不但要对接产品提出的功能性需求,还会收到产品出于数据统计分析需求目的而提出的附带的隐形需求:统计打点。大多数公司的基础框架层都会对统计打点功能做高级封装,工程师只需要在某个操作被触发的时候在处理的方法内加入一行函数调用即可完成,例如:- (void)btnCloseClicked:(id)sender { [MCCStatistic log

2017-08-23 10:36:59 658

原创 ObjC如何通过runtime修改Ivar的内存管理方式(三)

第二次尝试到了这里,我们已经完全搞清楚了 oc 是如何管理assign和weak对象的了,如果你有兴趣也可以去自己尝试破解strong的实现机制,原理一样。接下来我们决定开始对 MCAssignToWeak 进行第二次修改的尝试,这一次,我们需要加入对 delegate 属性的 setter 和 getter 的替换,使之调用正确的方法存取成员变量。@implementation MCAssignT

2017-07-24 19:37:23 611

原创 ObjC如何通过runtime修改Ivar的内存管理方式(二)

是否能够在运行时修改 Ivar Layout?虽然我们已经破译了 oc runtime 如何存储变量的内存修饰符的秘密,但是我们是否能够在运行时通过修改 Ivar Layout 的方式来改变变量的内存管理方式呢?例如 assgin 变为 weak ?仔细推敲[Objective-C Class Ivar Layout 探索][6]的细节后,我们不难得出一个简单直接的办法——调用 class_setI

2017-07-21 17:31:58 634

原创 ObjC如何通过runtime修改Ivar的内存管理方式(一)

为什么要这么做?在iOS 9之前,UITableView(或者更确切的说是 UIScrollView)有一个众所周知的问题:@property (nonatomic, assign) id delegate;苹果将 delegate 的内存修饰符声明为了assign,这是 MRC 时代防止循环引用的不二法门。但是到了 ARC 时代,苹果引入了弱引用修饰符(weak)对原先的(assign)暨非强引用

2017-07-20 11:31:38 664

原创 [Leetcode] Best Time to Buy and Sell Stock I的优化思路详解

Best Time to Buy and Sell Stock I 优化思路详解本文循序渐进地讲解了如何一步一步地优化这个经典leetcode问题的解法。

2017-02-09 14:52:03 274

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除