美文网首页
性能优化知识点总结

性能优化知识点总结

作者: IOS_Wek | 来源:发表于2018-07-04 14:21 被阅读6次

    一,了解性能优化的点;
    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:) 下面两个方法是不能共存的。

    • (void)test:(BOOL )b;
      -(void)test:(NSString *)a;

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

    • (void)test:(BOOL )b; 类对象
      +(void)test:(NSString *)a; 元类对象

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

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

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

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

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

    相关文章

      网友评论

          本文标题:性能优化知识点总结

          本文链接:https://www.haomeiwen.com/subject/qqzduftx.html