1. cellForRowAtIndexPath, 单元格视图重用,

注意尽量让所有视图重用, 只根据单元格row和section的不容更换不同的数据, 而不是每次都生成新的单元格, 这是程序奔溃的前兆

2. 不要使用阴影

//    //设置阴影
// _contentV.layer.shadowOffset = CGSizeMake(0, 1);
// _contentV.layer.shadowColor = UIColorFromRGB(0x111111).CGColor;
// _contentV.layer.shadowOpacity = 0.3;
// _contentV.layer.shadowRadius = 0.5;

以上的代码永远不要使用

3. loadView, viewDidLoad, viewDidAppear

这三个方法时间顺序从左到右递增

一些跟数据有关系的耗时较长的视图或操作放在viewDidAppear

4.NSDictionary

for (NSInteger i = 0;i < 10000;i ++ ) {
_propertyArray = [nsdictionary allKeys];
}

大批量的调用

[nsdictionary allKeys], 会消耗很多内存, 而且无法回收, 要慎用

5.可变对象不能直接使用, 否则导致内存泄露

NSString *string = [[NSString alloc] initWithString:@"Leaker"];

原因是这样的,NSString本身是不可以修改的,我们使用了@操作符分配了字符串的内存之后,编译器帮助我们提高了程序的效率。编译器自动把具有相同内容的字符串分配了相同的地址。

(Cocoachina解释:也就是说 string 和 @"Leaker"的地址通过编译器编译后,是同一个,而如果你看过之前的文章,你就会知道”Leaker”这个字符串在程序运行期间是永远不会被释放的,这样一来,string也就不用释放,也就不存在内存泄露问题了。但是这仅仅是编译器的优化,并不能保证任何情况下都是这样。)

在这段例子代码中,NSString永远不会泄露,那这段例子也就没什么用了。并不是说这种写法的NSString永远不会泄露,所以你应该习惯地在不需要NSString时,调用-release方法去释放它们。不过在我们的测试里,NSString的内存泄露从来没有被检测到。而当我们把NSString换成NSMutableString时,正如所想,内存泄露开始显现。

IOS造成卡顿的主要原因的更多相关文章

  1. Android app 性能优化的思考--性能卡顿不好的原因在哪?

    说到 Android 系统手机,大部分人的印象是用了一段时间就变得有点卡顿,有些程序在运行期间莫名其妙的出现崩溃,打开系统文件夹一看,发现多了很多文件,然后用手机管家 APP 不断地进行清理优化 ,才 ...

  2. iOS应用卡顿分析

    1.屏幕显示图像的原理 显示器按照从上到下的方式,一行行扫描,扫描完成后显示器就呈现一帧画面,随后电子枪回到初始位置继续下一次扫描.为了把显示器的显示过程和系统的视频控制器进行同步,显示器(或者其他硬 ...

  3. 【转】iOS实时卡顿监控

    转自http://www.tanhao.me/code/151113.html/ 在移动设备上开发软件,性能一直是我们最为关心的话题之一,我们作为程序员除了需要努力提高代码质量之外,及时发现和监控软件 ...

  4. 解决scroll在ios上卡顿问题和兼容ios不支持:active伪类情况

    //有时候因为滚动层级元素过多会产生卡顿,特别在ios上十分明显,如果不想更换其他实现方式,可以加:-webkit-overflow-scrolling: touch; 开启硬件加速: 兼容ios不支 ...

  5. overflow:scroll 在ios 滚动卡顿

    使用 -webkit-overflow-scrolling 属性控制元素在移动设备上是否使用滚动回弹效果. 值 auto 使用普通滚动, 当手指从触摸屏上移开,滚动会立即停止. touch 使用具有回 ...

  6. overflow属性及其在ios下卡顿问题解决

    overflow属性:http://www.w3school.com.cn/cssref/pr_pos_overflow.asp overflow:scroll/auto;在手机页面滑动不流畅问题: ...

  7. iOS应用千万级架构:性能优化与卡顿监控

    CPU和GPU 在屏幕成像的过程中,CPU和GPU起着至关重要的作用 CPU(Central Processing Unit,中央处理器) 对象的创建和销毁.对象属性的调整.布局计算.文本的计算和排版 ...

  8. bootsrtap h5 移动版页面 在苹果手机ios滑动上下拉动滚动卡顿问题解决方法

    bootsrtap h5 移动版页面 在苹果手机ios滑动上下拉动滚动卡顿问题解决方法 bootsrtap框架做的h5页面,在android手机下没有卡顿问题,在苹果手机就一直存在这问题,开始毫无头绪 ...

  9. CSS3 动画卡顿性能优化解决方案--摘抄

    最近在开发小程序,与vue类似,它们都有生命周期这回事. onLoad 监听页面加载 onReady 监听页面初次渲染完成 onShow 监听页面显示 到底是什么意思? 所以这又触碰到了我的知识盲区, ...

随机推荐

  1. 几种常用的listenner

    1.ServletContextListener:监控web容器的启动和关闭 2.HttpSessionListener:监控bs结构中b的session创建和session销毁 3.HttpSess ...

  2. PHP 实现Word,excel等转换pdf

    近期做一个项目,须要将用户上传的word,excel文档转成PDF文档保存并打印.在网上找了非常多资料.并不全面,所以自己写了一份比較全面的教程来分享. 以下是操作步骤: 1.        安装免费 ...

  3. odoo费用报销流程

  4. python(7)- 小程序练习:循环语句for,while实现99乘法表

    打印99乘法表 for 循环语句实现: for i in range(1,10): for j in range(1,10): print(j,"x",i,"=" ...

  5. 【每日Scrum】第二天(4.23) TD学生助手Sprint2站立会议

    站立会议 组员 昨天 今天 困难 签到 刘铸辉 (组长) 昨天觉得整个界面不适合后期功能扩展,所以进行了整体整改 今天主要看了多事件处理的内容然后改了下界面, 遇到的困难就是正在寻找用户交互性比较好的 ...

  6. Scala随记

    使用Scala首先确保本地Java 8版本,然后按照官网所说,比较流行的方式(1) sbt; (2) IDE "The most popular way to get Scala is ei ...

  7. php跳转

    header("Location: http://bbs. lampbrother.net"); header("refresh:0;url=./login.php&qu ...

  8. 基于UDP的一对回射客户/服务器程序

    前言 之前曾经学习过一对回射客户/服务器程序的例子,不过那个是基于TCP协议的.本文将讲解另一对回射客户/服务器程序,该程序基于UDP协议.由于使用的协议不同,因此编写出的程序也有本质上的区别,应将它 ...

  9. 第 2 章 第 9 题 顺序 & 二分搜索效率分析问题

    问题分析 顺序搜索的时间复杂度是O( n ),二分搜索的时间复杂度级别是O( lgn ).但这并不代表二分的时间开销就一定比顺序的小,因为二分搜索有个前提:元素必须要是有序的.如果仅仅为了二分搜索几个 ...

  10. 《TCP/IP具体解释卷2:实现》笔记--UDP:用户数据报协议

    用户数据报协议.即UDP,是一个面向数据报的简单运输层协议:进程的每次输出操作仅仅产生一个UDP数据报,从而发送 一个IP数据报. 进程通过创建一个Internet域内的SOCK_DGRAM类型的插口 ...