如何检测iOS项目中self引起的内存泄露

项目地址:https://github.com/hades0918/CheckLeak

      在iOS的项目开发中我们常用到block,很实用,但是block给我们带来的问题也很多,如在block里面写self会导致内存泄露。小弟写了个小工具来检测这个问题,希望给大家带来方便,望star😄。

      首先,你需要安装pyobjc库(没有你想象中那么麻烦),然后配置工程路径(见readMe.md),那么就可以用了。如图:


图1

然后找到相关文件的指定行,发现代码如下:

dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(1*NSEC_PER_SEC)),dispatch_get_main_queue(), ^{

self.view.backgroundColor= [UIColorwhiteColor];

});

把self改成blockSelf(不错,你解决了一个重大bug,快让领导请你吃饭吧😄)

什么?你说着么用着还是麻烦,要开着终端,那么我们来解决一下。我们使用这个工具(mac自带)炮筒机器人:http://bbs.feng.com/read-htm-tid-4500879.html


图2


创建一个脚本工程,把代码复制进去,生成app,OK!

运行以后是这个样子的:


图3

当然你也可以把这个设置成开机启动,就什么都不用管了。 

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 本篇博客共分以下几个模块来介绍GCD的相关内容: 多线程相关概念 多线程编程技术的优缺点比较? GCD中的三种队列...
    dullgrass阅读 37,938评论 28 236
  • iOS中GCD的使用小结 作者dullgrass 2015.11.20 09:41*字数 4996阅读 20199...
    DanDanC阅读 4,502评论 0 0
  • Grand Central Dispatch(GCD)是异步执行任务的技术之一。一般将应用程序中记述的线程管理用的...
    韩七夏阅读 2,299评论 0 0
  • 1、主线程队列 VS 分线程队列 dispatch_sync 和 dispatch_async 区别: dispa...
    瑞小萌阅读 4,459评论 4 7
  • *面试心声:其实这些题本人都没怎么背,但是在上海 两周半 面了大约10家 收到差不多3个offer,总结起来就是把...
    Dove_iOS阅读 27,314评论 30 472