性能优化知识点总结

2018-07-04  本文已影响6人  IOS_Wek

一,了解性能优化的点;
1)(main函数执行之前)启动速度测量:Product->schema-editSchema 里面添加一个DYLD_PRINT_STATISTICS 1

2)main 函数执行的实践

12)的优化

减少动态库加载
减少类数量
Main函数不要太多耗时操作

3)循环引用:堆
堆,栈,静态区。
获取引用计数:CFGetRetainCount/ valueForkey retainCount
block weakSelf, StrongSelf 使用场景?
野指针:可以开启僵死对象调试
assign 和 weak 区别,assign修饰的对象回收时不会置空,有可能有野指针情况,weak 则会。
检查内存泄漏的方法:
1,静态检测

  1. 手动开启静态检测:product - analysing
    2)开启自动检测:target- > buildSetting- > analyze during build 设置一下。

2,动态检测instrument, 第三方内存检测工具(MleaksFinder:只检测试图)

3,打印析构

ARC。CG类,c方法, CF类手动释放

4)内存检测的原理
Method Swizzling 方法交换

@seletor(test:) 下面两个方法是不能共存的。

下面这两个就可以,因为存在不同的地方。

如何写一个工具:
目标:检测试图控制器是否内存泄漏
思路:我们在控制器弹出消失的时候,监听对象是否还活着

知识点:
load:不会覆盖,各个类都有自己的load方法
initialize: 懒加载的时候调用,类触发的时候

所以方法交换应该在load 方法里面。可以查看自己的代码。LeakCheckingDemo!!!!!

二,如何应用到我的实践中;

LeakCheckingDemo
思路:在控制器pop出去的时候,设置一个值pop为YES,然后在viewdidappear的时候取出这个值,如果为YES(pop过了)那么就延迟去检查self 是否为空,不为空就调用去打印

上一篇 下一篇

猜你喜欢

热点阅读