美文网首页
iOS 内存优化

iOS 内存优化

作者: Rockerliang | 来源:发表于2020-05-06 15:16 被阅读0次

    内存优化

    一. 内存泄露

    Xcode 自带了两种内存泄露查询工具:
    1 . Analyze(静态分析工具):

    • 逻辑缺陷:访问空指针或未初始化的变量等;
    • 内存管理错误:如内存泄漏等;
    • 无用存储逻辑:(永远不会被访问的变量、永远不会执行的代码);

    2.Instruments-Leaks

    常见的内存泄漏

    • Block循环引用
    • delegate循环引用问题
    • NSTimer循环引用
    • 非OC对象内存处理: CoreFoundation框架下的某些对象或变量需要手动释放、C语言代码中的malloc等需要对应free等。比如CFRunloopRef
    • 大次数循环内存暴涨问题 (其实也是内存峰值的问题)
    for (int i = 0; i < 100000; i++) {
            @autoreleasepool {
                NSString *string = @"Abc";
                string = [string lowercaseString];
                string = [string stringByAppendingString:@"xyz"];
                NSLog(@"%@", string);
           }
        }
    
    二.内存消耗过大或有内存峰值等

    1.加载大图:CATiledLayer类似瓦片视图,可以将绘制分区域进行,常用于一张大的图片的分部绘制。

    • 使用这个layer的好处之一就是,它不需要你自己计算分块显示的区域,它自己直接提供,你只需要根据这个区域计算图片相应区域,然后画图就可以了。
    • 第二个好处就是它是在其他线程画图,不会因为阻塞主线程而导致卡顿。
    • 第三个好处就是它自己实现了只在屏幕区域显示图片,屏幕区域外不会显示,而且当移动图片时,它会自动绘制之前未绘制的区域,当你缩放时它也会自动重绘。
      2.生成大量临时变量

    相关文章

      网友评论

          本文标题:iOS 内存优化

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