ios 性能优化策略
1、尽量不用动态高度
2、如果是动态高度的话,提前计算好即将展示的高度并使用 一定规则跟对应的对象进行绑定缓存起来以便下一次使用
3、不要在layoutSubViews 方法中对UI elements进行赋值,设置样式等,layoutSubViews这个方法可能会因为某个内容的变化而重新被调用一遍,
这样一来会有很多次的计算或者是重绘
4、在tableView Cell 中添加subView时用content.view.addSubView方法,如果时直接addSubView可能会多次 调用layoutSubViews这个方法。
5、减少主线程offscreenRendering的操作
a、合理利用layer的shouldRasterize属性(这个属性是将页面的静态内容缓存起来,如果页面元素是动态的,缓存的结果没有多大作用反而会造成资源的开销)
b、使用圆角图片代替设置layer的cornerRadius,设置layer的cornerRadius也是一种offScreen rendering的操作
c、设置阴影,使用[myView.layer setShadowPath:[[UIBezierPath bezierPathWithRect:myView.bounds] CGPath]];比[myView.layer setShadowOpacity:0.5]的效率高
d、减少layer的mask
e、视图尽可能设置为不透明以减少视图间的blending
f、抗锯齿layer.edgeAntialiasingMask, layer.allowsEdgeAntialiasing
6、shell cell & realCell:在快速滚动的时候没必要把realCell返回,这时候只要返回一个shell cell,当tableView滚动速率降低到一定程度的时候再返回你要显示的realCell
-(void)scrollViewDidScroll:(UIScrollView *)scrollView
{CGPoint velocity = [tableView.panGestureRecognizer velocityInView:self.view]; self.velocity = velocity;
}
-(UITableViewCell*)tableView:(UITableView*)tableView cellForRowAtIndexPath:(NSIndexPath*)indexPath { if(fabs(self.velocity.y) > 2000)
{
//return shell cell }else{//return real cell
} }
6、对于一些复杂的视图在drawRect:方法中直接将视图绘出来的效果比往一个容器中不停地添加label,imageView来得更加的高效( 内存开销大,花费时间更多)
7、不要在主线程中处理那些没有显示在页面中的UI的数据,比如在tableView滚动的时候做分页判断,显示第一在滚动的过程中用其他线程将即将要显示的数据处理好,而不是在显示的时候处理
8、显示的图片大小尽量和ImageView的大小一致,减少图片为了因大小不一致而导致的处理过程。
9、尽可能减小UI布局的深度,使用flat layout可以使元素间的blending减少

10、合理选择数据库缓存方式:简单的数据缓存不要使用关系型数据库
11、减少相同数据的重复处理
12、重用开销大的对象(如NSPredicate,NSDateFormatter,NSRegressExpression)
13、使用:Autolayout的使用看视图而定,subview少的视图
用autolayout比较划算,Subview多的视图用autolayout的开销会比较大
(setframe是最快的,其次是元素依赖自身的layout,再其次是依赖父视图)

UIWebView
1、尽量重用webView中的对象
2、减少webView实例对象在工程中的数量(用一个webView对象然后每次加载过对应显示的内容)
3、优先用loadHTMLString:baseURL: 然后才是loadRequest: 来加载一个网页
实现webView:didFailLoadWithError:ofthedelegate这个方法使webView能够及时的关闭对某个错误的跟踪,同时可以对webView的出现的错误进行处理达到更好的体验
应用打开的速度
Tip1:减少应用启动时的预加载项
A、减少类方法的数量
类方法需要在应用启动时进行加载
B、减少Xib,Stroyboard的数量
C、减少开机启动时非必要的网络加载(尽可能的轻)
Ios8使用webKit,webKit的比UIWebView有更好的体验
内存优化:
1、减少类型转换,尽量用定义的类型来匹配
如 –(int)getValue; int a=getValue 比long a=getValue占用的内存更少,
枚举类型赋值时尽量如果变量定义是用一个整形来存取枚举值
2、对象在内存中存在的时间越久越容易造成内存泄漏,全局变量,单例
耗电:
定时器
定位
Io 读写
视频播放
总结:多缓存,少计算,少转换。
ios 性能优化策略的更多相关文章
- iOS性能优化:Instruments使用实战
iOS性能优化:Instruments使用实战 最近采用Instruments 来分析整个应用程序的性能.发现很多有意思的点,以及性能优化和一些分析性能消耗的技巧,小结如下. Instrument ...
- 【腾讯Bugly干货分享】微信读书iOS性能优化
本文来自于腾讯bugly开发者社区,非经作者同意,请勿转载,原文地址:http://dev.qq.com/topic/578c93ca9644bd524bfcabe8 “8小时内拼工作,8小时外拼成长 ...
- IOS 性能优化的建议和技巧
IOS 性能优化的建议和技巧 本文来自iOS Tutorial Team 的 Marcelo Fabri,他是Movile的一名 iOS 程序员.这是他的个人网站:http://www.marcelo ...
- 常见性能优化策略的总结 good
阅读目录 代码 数据库 缓存 异步 NoSQL JVM调优 多线程与分布式 度量系统(监控.报警.服务依赖管理) 案例一:商家与控制区关系的刷新job 案例二:POI缓存设计与实现 案例三:业务运营后 ...
- 90 % Java 程序员被误导的一个性能优化策略
我们经常看到一些 Java 性能优化的书或者理念,说不要在循环内定义变量,这样会占用过多的内存影响性能,而要在循环外面定义.接触 Java 这么久以来,相信很多 Java 程序员都被这种代码性能优化策 ...
- iOS性能优化总结
iOS性能优化总结.关于 iOS 性能优化梳理: 基本工具.业务优化.内存优化.卡顿优化.布局优化.电量优化. 安装包瘦身.启动优化.网络优化等. 关于iOS 性能优化梳理: 基本工具.业务优化.内存 ...
- 在 Android开发中,性能优化策略十分重要
在 Android开发中,性能优化策略十分重要本文主要讲解性能优化中的布局优化,希望你们会喜欢.目录 示意图 1. 影响的性能 布局性能的好坏 主要影响 :Android应用中的页面显示速度 2. 如 ...
- c++ 性能优化策略
c++ 性能优化策略 作者:D_Guco 来源:CSDN 原文:https://blog.csdn.net/D_Guco/article/details/75729259 1 关于继承:不可否认良好的 ...
- iOS 性能优化收集
iOS 性能调试 instrument Instrument Instrument之Core Animation工具 避免图层混合 ①.确保控件的opaque属性设置为true,确保backgroun ...
随机推荐
- 配置 DHCP 服务 - 每天5分钟玩转 OpenStack(89)
前面章节我们看到 instance 在启动过程中能够从 Neutron 的 DHCP 服务获得 IP,本节将详细讨论其内部实现机制. Neutron 提供 DHCP 服务的组件是 DHCP agent ...
- C#:lock锁与订单号(或交易号)的生成
在弄电商类网站的时候,往往是根据年月日时分秒的格式生成订单号(yyyyMMddHHmmss),为了解决并发性,就直接在生成订单号的区域块加上lock. 下面,我们来简单测试一下. 1.新建项目(控制台 ...
- 相克军_Oracle体系_随堂笔记012-undo
undo表空间中undo段是自动生成的,oracle自动使用undo表空间的undo段. 作为高级DBA,需要了解Oracle是如何使用undo段的.这样出了性能问题才能够解决. 1.Undo表空 ...
- iOS开发多线程篇—多线程简单介绍
iOS开发多线程篇—多线程简单介绍 一.进程和线程 1.什么是进程 进程是指在系统中正在运行的一个应用程序 每个进程之间是独立的,每个进程均运行在其专用且受保护的内存空间内 比如同时打开QQ.Xcod ...
- 移动端 h5调试技巧
一 安卓 一 chrome 1.安卓手机安装chrome浏览器,手机打开开发者模式,用usb线链接电脑,并且允许调试. 2.电脑chrome地址栏输入 chrome://inspect 进入后点击 i ...
- 【LeetCode】Increasing Triplet Subsequence(334)
1. Description Given an unsorted array return whether an increasing subsequence of length 3 exists o ...
- HandlerThread 创建一个异步的后台线程
使用HandlerThread几大优点: 1.制作一个后台异步线程,需要的时候就可以丢一个任务给它,使用比较灵活; 2.Android系统提供的,使用简单方便,内部自己封装了Looper+Handle ...
- OpenCV2:等间隔采样和局部均值的图像缩小
图像的缩小从物理意义上来说,就是将图像的每个像素的大小缩小相应的倍数.但是,改变像素的物理尺寸显然不是那么容易的,从数字图像处理的角度来看,图像的缩小实际就是通过减少像素个数来实现的.显而易见的,减少 ...
- Sql Server之数据类型详解
数据类型是一种属性,用于指定对象可保存的数据的类型,SQL Server中支持多种数据类型,包括字符类型.数值类型以及日期类型等.数据类型相当于一个容器,容器的大小决定了装的东西的多少,将数据分为 ...
- ASP.NET MVC中获取URL地址参数的两种写法
一.url地址传参的第一种写法 1.通过mvc中默认的url地址书写格式:控制器/方法名/参数 2.实例:http://localhost:39270/RequestDemo/Index/88,默认参 ...