当前位置: 首页 > 面试题库 >

iOS内存的使用和优化的注意事项

金高飞
2023-03-14
本文向大家介绍iOS内存的使用和优化的注意事项相关面试题,主要包含被问及iOS内存的使用和优化的注意事项时的应答技巧和注意事项,需要的朋友参考一下

重用问题:

如UITableViewCells、UICollectionViewCells、UITableViewHeaderFooterViews

设置正确的reuseIdentifier,充分重用;

尽量把views设置为不透明:

当opque为NO的时候,图层的半透明取决于图片和其本身合成的图层为结果,可提高性能;

不要使用太复杂的XIB/Storyboard:

载入时就会将XIB/storyboard需要的所有资源,

包括图片全部载入内存,即使未来很久才会使用。

那些相比纯代码写的延迟加载,性能及内存就差了很多;

选择正确的数据结构:

学会选择对业务场景最合适的数组结构是写出高效代码的基础。

比如,数组: 有序的一组值。

使用索引来查询很快,使用值查询很慢,插入/删除很慢。

字典: 存储键值对,用键来查找比较快。

html" target="_blank">集合: 无序的一组值,用值来查找很快,插入/删除很快。

gzip/zip压缩:

当从服务端下载相关附件时,可以通过gzip/zip压缩后再下载,使得内存更小,下载速度也更快。

延迟加载:

对于不应该使用的数据,使用延迟加载方式。

对于不需要马上显示的视图,使用延迟加载方式。

比如,网络html" target="_blank">请求失败时显示的提示界面,可能一直都不会使用到,因此应该使用延迟加载。

数据缓存:

对于cell的行高要缓存起来,使得reload数据时,效率也极高。

而对于那些网络数据,不需要每次都请求的,应该缓存起来,

可以写入数据库,也可以通过plist文件存储。

处理内存警告:

一般在基类统一处理内存警告,将相关不用资源立即释放掉

重用大开销对象:

一些objects的初始化很慢,

比如NSDateFormatter和NSCalendar,但又不可避免地需要使用它们。

通常是作为属性存储起来,防止反复创建。

避免反复处理数据:

许多应用需要从服务器加载功能所需的常为JSON或者XML格式的数据。

在服务器端和客户端使用相同的数据结构很重要;

使用Autorelease Pool:

在某些循环创建临时变量处理数据时,自动释放池以保证能及时释放内存;

正确选择图片加载方式:详情阅读细读UIImage加载方式

 类似资料:
  • 本文向大家介绍Java 高并发九:锁的优化和注意事项详解,包括了Java 高并发九:锁的优化和注意事项详解的使用技巧和注意事项,需要的朋友参考一下 摘要 本系列基于炼数成金课程,为了更好的学习,做了系列的记录。 本文主要介绍: 1. 锁优化的思路和方法 2. 虚拟机内的锁优化 3. 一个错误使用锁的案例 4. ThreadLocal及其源码分析 1. 锁优化的思路和方法 在[高并发Java 一]

  • 主要内容:if语句使用,布尔运算,isin()操作,reindex()操作Pandas 基于 NumPy 构建,它遵循 NumPy 设定的一些规则。因此,当您在使用 Pandas 时,需要额外留意一些事项,避免出现一些不必要的错误。 if语句使用 在 if 语句中,如果您需要将 Pandas 对象转换为布尔值时,需要格外留意,这种操作会引起  ValueError 异常, 下面通过一组示例做简单说明: 输出结果: 从输出结果可以看出,上述代码引发了 ValueError

  • 本文向大家介绍iOS UIView的Touch事件注意点相关面试题,主要包含被问及iOS UIView的Touch事件注意点时的应答技巧和注意事项,需要的朋友参考一下 如果父控件不能接收触摸事件,那么子控件就不可能接收到触摸事件(掌握) UIView不接收触摸事件的三种情况: 不接收用户交互 : userInteractionEnabled = NO 隐藏 : hidden = YES 透明 :

  • 本文向大家介绍Vue.js 和 MVVM 的注意事项,包括了Vue.js 和 MVVM 的注意事项的使用技巧和注意事项,需要的朋友参考一下 MVVM 是Model-View-ViewModel 的缩写,它是一种基于前端开发的架构模式,其核心是提供对View 和 View Model 的双向数据绑定,这使得View Model的状态改变可以自动传递给 View,这就是所谓的数据双向绑定。 Vue.j

  • 主要内容:1.优缺点,2.使用注意事项,3.适用场景,4.应用场景1.优缺点 优点: 在单例模式中,活动的单例只有一个实例,对单例类的所有实例化得到的都是相同的一个实例。这样就 防止其它对象对自己的实例化,确保所有的对象都访问一个实例 单例模式具有一定的伸缩性,类自己来控制实例化进程,类就在改变实例化进程上有相应的伸缩性。 提供了对唯一实例的受控访问。 由于在系统内存中只存在一个对象,因此可以 节约系统资源,当 需要频繁创建和销毁的对象时单例模式无疑可以提高系统

  • 受现代 JavaScript 的限制 (以及废弃Object.observe),Vue不能检测到对象属性的添加或删除。由于 Vue 会在初始化实例时对属性执行getter/setter转化过程,所以属性必须在data对象上存在才能让 Vue 转换它,这样才能让它是响应的。例如: var vm = new Vue({ data:{ a:1 } }) // `vm.a` 是响应的 v