美文网首页
内存使用Tips

内存使用Tips

作者: 凯旋之歌 | 来源:发表于2017-04-18 22:56 被阅读0次

一、image使用相关,见上一篇文章

二、 滑动列表的时候,使用UITableView的reuse机制

复制代码

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {

static NSString *CellIdentifier = @"Cell";

UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];

if (cell == nil) {

cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];

}

dequeueReusableCellWithIdentifier 方法会把隐藏的界面拿来重用,这样节省很多资源。

三、频繁打开和关闭SQLite,导致内存不断的增长

SQLite的数据库本质上来讲就是一个磁盘上的文件,频繁打开和关闭是很耗时和浪费资源的,可以设置SQLite的长连接方式;避免频繁的打开和关闭数据库;

四、在UITableView 的cellForRowAtIndexPath 代理中不要使用 stringWithFormat 方法

定义一个字符串变量有很多方法,最简单的就是 NSString *str = @“abc”, 还有initWithString、stringWithFormat和stringWithCString等等。大量的字符操作时,不同的方法消耗不同的内存。

[NSString stringWithString:@"abcc"]; 内存增长过快

[NSString stringWithFormat:@"abcc%d",i]; 内存增长过快

[[NSString alloc] initWithFormat:@"abcc%d",i]; 内存稍有增长

NSMutableString *a=[[NSMutableString alloc] init];

[a stringByAppendingFormat:@"abcc%d",i];内存增长过快

由于stringWithFormat 即耗时又耗内存,所以在cellForRowAtIndexPath 绘制cell 的时消耗大量内存和时间,造成界面滑动不流畅。

五. 在Image Views中调整图片大小

如果要在UIImageView中显示一个来自bundle的图片,你应保证图片的大小和UIImageView的大小相同。在运行中缩放图片是很耗费资源的,特别是UIImageView嵌套在UIScrollView中的情况下。

如果图片是从远端服务加载的你不能控制图片大小,比如在下载前调整到合适大小的话,你可以在下载完成后,最好是用background thread,缩放一次,然后在UIImageView中使用缩放后的图片。

六.重用大开销对象

一些objects的初始化很慢,比如NSDateFormatter和NSCalendar。

想要避免使用这个对象的瓶颈你就需要重用他们,可以通过添加属性到你的class里或者创建静态变量来实现。

相关文章

  • 内存使用Tips

    一、image使用相关,见上一篇文章 二、 滑动列表的时候,使用UITableView的reuse机制 复制代码 ...

  • elasticsearch单机多实例伪集群部署

    tips:首先在es集群的生产环境中,一般不建议单机部署多实例,如果使用的是一台高配(高内存)物理机,内存≥512...

  • Flutter优化相关

    Flutter之禅 内存优化篇Flutter ImageCacheFlutter 性能优化 Tips

  • 引用变量

    定义:用不同的名字访问同一变量内容 以下两段代码a均指向同一内存空间 Tips: 使用 unset() 只会取消引...

  • memcached管理

    tips memcached 可以集群,多个机器的内存作为一整块内存 安装 编译libevent-devel编译m...

  • Mac内存清理Tips

    基本思路 从根目录开始逐层du -h -d 1查看,并选取体积大的子目录进一步查看是否可以移除个人目录以外记得要加...

  • 你真的会用 Fragment 吗?

    FragmentManager 使用 Tips 在 activity 中使用 ViewPager,BottomSh...

  • Java基础之IO流(二)!!

    I/O 工作原理 磁盘I/O tips: DMA:全称叫直接内存存取(Direct Memory Access),...

  • bashrc和profile区别

    tips:使用的 ubuntu 系统,其他系统不清楚

  • Habitica使用tips

    每日任务 这是紧张度最高的列表,没完成会导致扣血。 同时你参加了队伍打怪任务的话,队友也会被扣血。 达到7级和攒够...

网友评论

      本文标题:内存使用Tips

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