内存的使用和优化的注意事项
重用问题:如UITableViewCells、UICollectionViewCells、UITableViewHeaderFooterViews设置正确的reuseIdentifier,充分重用;
尽量把views设置为不透明:当opque为NO的时候,图层的半透明取决于图片和其本身合成的图层为结果,可提高性能;
不要使用太复杂的XIB/Storyboard:载入时就会将XIB/storyboard需要的所有资源,包括图片全部载入内存,即使未来很久才会使用。那些相比纯代码写的延迟加载,性能及内存就差了很多;
选择正确的数据结构:学会选择对业务场景最合适的数组结构是写出高效代码的基础。比如,数组: 有序的一组值。使用索引来查询很快,使用值查询很慢,插入/删除很慢。字典: 存储键值对,用键来查找比较快。集合: 无序的一组值,用值来查找很快,插入/删除很快。
选择正确的数据结构:学会选择对业务场景最合适的数组结构是写出高效代码的基础。比如,数组: 有序的一组值。使用索引来查询很快,使用值查询很慢,插入/删除很慢。字典: 存储键值对,用键来查找比较快。集合: 无序的一组值,用值来查找很快,插入/删除很快。 gzip/zip压缩:当从服务端下载相关附件时,可以通过gzip/zip压缩后再下载,使得内存更小,下载速度也更快。
延迟加载:对于不应该使用的数据,使用延迟加载方式。对于不需要马上显示的视图,使用延迟加载方式。比如,网络请求失败时显示的提示界面,可能一直都不会使用到,因此应该使用延迟加载。
数据缓存:对于cell的行高要缓存起来,使得reload数据时,效率也极高。而对于那些网络数据,不需要每次都请求的,应该缓存起来,可以写入数据库,也可以通过plist文件存储。
处理内存警告:一般在基类统一处理内存警告,将相关不用资源立即释放掉
处理内存警告:一般在基类统一处理内存警告,将相关不用资源立即释放掉 重用大开销对象:一些objects的初始化很慢,比如
NSDateFormatter
和NSCalendar
,但又不可避免地需要使用它们。通常是作为属性存储起来,防止反复创建。避免反复处理数据:许多应用需要从服务器加载功能所需的常为JSON或者XML格式的数据。在服务器端和客户端使用相同的数据结构很重要;
使用Autorelease Pool:在某些循环创建临时变量处理数据时,自动释放池以保证能及时释放内存;
正确选择图片加载方式
转载于:https://www.cnblogs.com/chzheng/p/5962511.html
内存的使用和优化的注意事项相关推荐
- 栈,寄存器,局部变量,内存,语言级别优化程序的方法
栈,寄存器,局部变量,内存,语言级别优化程序的方法 栈是内存中开辟出一块空间,对应到汇编中就是栈段 stack segment,即SS,它是由高地址向低地址生长的 寄存器是CPU中的一些高速存储器,有 ...
- 面向非易失内存的MPI-IO接口优化
点击上方蓝字关注我们 面向非易失内存的MPI-IO接口优化 邓镇龙, 陈志广 中山大学计算机学院,广东 广州 510006 摘要:在高性能计算环境中,MPI应用多个计算节点同时访问底层存储系统文件时, ...
- 【GPU】Nvidia CUDA 编程基础教程——利用基本的 CUDA 内存管理技术来优化加速应用程序
博主未授权任何人或组织机构转载博主任何原创文章,感谢各位对原创的支持! 博主链接 本人就职于国际知名终端厂商,负责modem芯片研发. 在5G早期负责终端数据业务层.核心网相关的开发工作,目前牵头6G ...
- 《嵌入式linux内存使用与性能优化》读书笔记
<嵌入式linux内存使用与性能优化>读书笔记 前言 本书的重点分为系统内存和性能优化,前4章着重内存使用,尽量减少进程的内存使用量,定位和发现内存泄漏:后5章着重与如何让系统性能优化,加 ...
- Unity内存管理和GC优化
目录 [性能优化]内存管理和GC优化 前言 内存优化思维导图 一.托管堆基础知识学习 1.1. Unity游戏运行时内存占用分以下几部分: 1.2 GC和堆内存联系 二.垃圾回收何时触发 三.GC如何 ...
- Android:最全面详细的性能优化攻略(含内存优化、内存泄漏、绘制优化、布局优化、图片优化、APK优化、多线程优化、列表优化等)
前言:佛教中有一句话:初学者的心态,拥有初学者心态是件了不起的事情.真正的大师永远怀有一颗学徒的心. 一.概述 在Android中,性能优化是细分领域中最难且也是知识面涉及最深和最广的方向之一. 更快 ...
- 《嵌入式Linux内存使用与性能优化》笔记
<嵌入式Linux内存使用与性能优化>笔记 这本书有两个关切点:系统内存(用户层)和性能优化. 这本书和Brendan Gregg的<Systems Performance>相 ...
- Android手机内存管理与性能优化
Android手机内存管理与性能优化&JNI.NDK高级编程(JNI.Dalvik.内存监测) 课程分类:Android 适合人群:中级 课时数量:34小节课时 用到技术:Dalvik,DDM ...
- 嵌入式linux内存使用和性能优化
这本书有两个关切点:系统内存(用户层)和性能优化. 这本书和Brendan Gregg的<Systems Performance>相比,无论是技术层次还是更高的理论都有较大差距.但是这不影 ...
最新文章
- ESXi6.5环境搭建(三:vSphere Client6.0安装)
- 新版中青——青龙羊毛
- Linux什么是文件IO,linux中文件IO
- 成功解决pypmml.base.PmmlError: (‘MalformedInputException‘, ‘Input length = 1‘)
- OVERLAPPED结构与GetOverlappedResult函数
- python如何实现支持中文
- js 点击button切换颜色_ThingJS 和three.js开发示例对比,让开发早点下班回家!3D 可视化...
- oracle存储返回sql查询,如何做才能使record类型和table类型存储查询语句返回的多条记录?...
- 【转帖】Mysql多维数据仓库指南 第一篇 第1章
- 水煮TCPMP (转)
- Qt获取IE地址栏内容
- gensim中word2vec API参数说明
- 超详细介绍 图像处理(卷积)
- label 字体添加中划线和下划线
- pytorch神经网络对Excel数据集进行处理2.0(读取,转为tensor格式,归一化),并且以鸢尾花(iris)数据集为例,实现BP神经网络
- 国际标准之语言编码 - ISO-639
- HDU4262 Juggler 线段树
- IDEA创建maven项目没有src/main/java目录问题解决
- Joomla安装过程中MySQL出现错误
- 用Python写了个电影网站系统(附源码)
热门文章
- ubuntu终端下快捷键,字体放大缩小等【逐渐完善篇】
- oracle 分段函数,清华大学出版社-图书详情-《新高考数学题型全归纳(基础版)》...
- 整型数组中三个数的最大乘积
- mysql测试表格的年龄的语句是_MySQL查询语句练习题,测试基本够用了
- c语言打开外部doc文件,C语言-内部函和外部函数.doc
- hadoop—集群配置历史服务器及访问历史服务器日志
- unsigned short占几个字节_ARM中,字、半字、字节分别是多少位?
- HTML第八章ppt,html教程第八章(JavaSript核心语言对象).ppt
- flash写保护原理_为什么固态会掉盘?著名的30分钟大法修复是什么原理?
- python中词云图是用来描述_python中实现词云图