IOS造成卡顿的主要原因
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造成卡顿的主要原因的更多相关文章
- Android app 性能优化的思考--性能卡顿不好的原因在哪?
说到 Android 系统手机,大部分人的印象是用了一段时间就变得有点卡顿,有些程序在运行期间莫名其妙的出现崩溃,打开系统文件夹一看,发现多了很多文件,然后用手机管家 APP 不断地进行清理优化 ,才 ...
- iOS应用卡顿分析
1.屏幕显示图像的原理 显示器按照从上到下的方式,一行行扫描,扫描完成后显示器就呈现一帧画面,随后电子枪回到初始位置继续下一次扫描.为了把显示器的显示过程和系统的视频控制器进行同步,显示器(或者其他硬 ...
- 【转】iOS实时卡顿监控
转自http://www.tanhao.me/code/151113.html/ 在移动设备上开发软件,性能一直是我们最为关心的话题之一,我们作为程序员除了需要努力提高代码质量之外,及时发现和监控软件 ...
- 解决scroll在ios上卡顿问题和兼容ios不支持:active伪类情况
//有时候因为滚动层级元素过多会产生卡顿,特别在ios上十分明显,如果不想更换其他实现方式,可以加:-webkit-overflow-scrolling: touch; 开启硬件加速: 兼容ios不支 ...
- overflow:scroll 在ios 滚动卡顿
使用 -webkit-overflow-scrolling 属性控制元素在移动设备上是否使用滚动回弹效果. 值 auto 使用普通滚动, 当手指从触摸屏上移开,滚动会立即停止. touch 使用具有回 ...
- overflow属性及其在ios下卡顿问题解决
overflow属性:http://www.w3school.com.cn/cssref/pr_pos_overflow.asp overflow:scroll/auto;在手机页面滑动不流畅问题: ...
- iOS应用千万级架构:性能优化与卡顿监控
CPU和GPU 在屏幕成像的过程中,CPU和GPU起着至关重要的作用 CPU(Central Processing Unit,中央处理器) 对象的创建和销毁.对象属性的调整.布局计算.文本的计算和排版 ...
- bootsrtap h5 移动版页面 在苹果手机ios滑动上下拉动滚动卡顿问题解决方法
bootsrtap h5 移动版页面 在苹果手机ios滑动上下拉动滚动卡顿问题解决方法 bootsrtap框架做的h5页面,在android手机下没有卡顿问题,在苹果手机就一直存在这问题,开始毫无头绪 ...
- CSS3 动画卡顿性能优化解决方案--摘抄
最近在开发小程序,与vue类似,它们都有生命周期这回事. onLoad 监听页面加载 onReady 监听页面初次渲染完成 onShow 监听页面显示 到底是什么意思? 所以这又触碰到了我的知识盲区, ...
随机推荐
- XPath可以快速定位到Xml中的节点或者属性。XPath语法很简单,但是强大够用,它也是使用xslt的基础知识。
示例Xml: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 <?xml versio ...
- 修改 百度地图 infowindow 默认样式
1.百度 api 没有 提供可以修改 infowindow 默认样式的 方法. 如需修改,需要 自定义 替换 默认样式. demo.html <!DOCTYPE html> <htm ...
- 【Scala类型系统】自身类型(self type)引用
定义 特质能够要求混入它的类扩展自还有一个类型,可是当使用自身类型(self type)的声明来定义特质时(this: ClassName =>).这种特质仅仅能被混入给定类型的子类其中. 如果 ...
- UIView 的 autoresizingMask 属性 详解。
转载自:liubo0_0的专栏 链接网址:http://blog.csdn.net/liubo0_0/article/details/7085935 在 UIView 中有一个autoresizin ...
- 互联网时代的精准招聘-Uber新手游有感
找工作难.招人也难.漫天的简历,全是求职者广撒网式的复制粘贴,如何找到合适的人.会认真对待职位的人?或许你须要换换思路,看看Uber新出的手机游戏能够咱啥启发. Uber在过去5年已经蹭蹭成长为估值5 ...
- Write Custom Java to Create LZO Files
https://cwiki.apache.org/confluence/display/Hive/LanguageManual+LZO LanguageManual LZO Skip to e ...
- throws ? catch checked unchecked
ThrowableClass Error (unchecked) Exception IOException (checked) RuntimeException (unchecked) publi ...
- spark 划分stage Wide vs Narrow Dependencies 窄依赖 宽依赖 解析 作业 job stage 阶段 RDD有向无环图拆分 任务 Task 网络传输和计算开销 任务集 taskset
每个job被划分为多个stage.划分stage的一个主要依据是当前计算因子的输入是否是确定的,如果是则将其分在同一个stage,从而避免多个stage之间的消息传递开销. http://spark. ...
- Red Black Tree 红黑树 AVL trees 2-3 trees 2-3-4 trees B-trees Red-black trees Balanced search tree 平衡搜索树
小结: 1.红黑树:典型的用途是实现关联数组 2.旋转 当我们在对红黑树进行插入和删除等操作时,对树做了修改,那么可能会违背红黑树的性质.为了保持红黑树的性质,我们可以通过对树进行旋转,即修改树中某些 ...
- checkbox复选框的使用
复选框: <input type="checkbox" name="favor" value="唱歌"/>唱歌 <i ...