iOS之---优化应用
来源:互联网 发布:Windows 10 微信 编辑:程序博客网 时间:2024/06/07 18:02
一、First launch
第一:quick 速度。首次启动要快,如果不能做到快,那么需要事先显示一张loading时的图片,这样给用户的感觉会很好,而不会因为速度慢而让用户给删除掉
第二:不能Crash。应用在启动的时候发生崩溃有几个方面,第一长时间没有响应被系统杀死,第二,需要访问网络的应用,没有网络或者网络不好的状态下有可能崩溃,这时候需要预加载,或者将网络事件与UI显示分离开,进行异步操作。第三,内部文件,xib文件,这个文件会在编译时编译成nib二进制文件,是一个很大的内存文件,当一个xib上面有很多的view的时候,会造成很大的性能问题,编译出来的xib文件是一个很大的文件,在加载时会非常非常慢。
解决方法:第一:少使用xib文件,尽量用代码去写。第二:把xib文件分解成N个xib文件,每个xib文件包含尽量少的view。第三:使用storyboard,这个StoryBoard已经 经过了优化不会造成xib文件的级数增大,缺点是只支持ios5以上的系统。第四:延迟加载资源,最好在viewDidLoad函数中加载资源。第五:网络下载要使用异步下载。
二、Workflow。第一:alert 弹出对话框。这个会打断用户的使用流程,而且给用户的信息量小,并且时对用户造成侵犯。如果非要提示用户,可以显示一个浮动窗口,进行提示。这个浮动层不能打断用户的行为,只有在非常严重的情况下才使用alert dialog。第二:减少用户的tab。
三、response。反映速度应该快速。
第一,网络资源,(1)sendSynchronousRequest这个方法不建议使用。这是同步的方法,即使在线程中也是。最好使用connectionWithRequest:deleget异步方法来取得网络资源;(2)取消不需要的网络访问,最好建立几个网络请求队列,没有必须的网络需求队列,这个队列可以随时被cancel掉,必须的网络请求队列需要保持;(3)使用网络cache;(4)增量处理数据,一点一点的取得数据,分别显示,不一定非要一次性显示全部数据;(5)线程不宜开的太多,线程太多会造成网络很慢,尤其是图片或者头像获得。
第二,图片的loading,一般jpeg的格式图片会比png的图片loading的慢。
jpge的压缩和解压的时间不稳定,这导致你在处理时无法控制时间。png是无损压缩格式,所以图片往往会很大,这时候需要进行优化,在xcode中包括了这个工具,命令是pngcrash -iphone -f 0 orig.png optimized.png。网络请求的图片一般是没办法经过这种方式来优化,那么我们可以通过一些code来进行优化,例如优化图片的阿尔法值等;通过cache画好的图案来优化效果。
第三, table views,其中的cells里加载时,在滑动时会造成很卡的情况。
优化每个view的渲染过程,来节省你的cell的加载过程。customCell不好用,使用drawrect方法来代替吧。其中有很多技巧,可以查阅文档。不要和api作对,利用instrument来查找瓶jin。
四、Details细节
第一:Appearance 外观要好看,有些UI可以使用Hack的方法来改变系统的UI,IOS5出现了可以修改UI的外观的方法,不过只支持IOS5。
第二:Animation,好的动画效果会给用户心旷神怡的感觉。
第三:Status bar,这个bar可以隐藏,不过一旦隐藏起来后用户看不到电量和时间会很难受。
第四:state saving,当用户接完电话回来后,还想继续玩你的应用,但是如果你不保存你的应用的当前状态,会给用户的心理造成很大的伤害。
- iOS之---优化应用
- 绝对新手之-iOS 应用开发
- IOS开发之---网络应用
- IOS开发之---网络应用
- 开始ios之旅--地图应用01
- iOS应用性能优化
- IOS应用开发-应用评分
- 代码优化-之-优化除法
- 代码优化-之-优化除法
- 代码优化-之-优化除法
- 代码优化-之-优化除法
- 代码优化-之-优化除法
- 代码优化-之-优化除法
- 代码优化-之-优化除法
- iOS开发学习之 - 正则表达式在IOS中的应用
- 代码优化之-优化除法
- 代码优化之-优化除法
- Domino应用优化-系统管理篇
- Android获取已安装应用信息(图标,名称,版本号,包)
- Js动态添加事件 实现附加自己的事件属性
- pragma comment的使用(转)
- Error in module RSQL of the database interface
- hdu 4057
- iOS之---优化应用
- Maven 学习资料
- Linux上的free命令详解
- android 长按震动实例
- AlertDialog show的时候会报错:token null is not for an application
- MySQL体系结构详解
- 安卓图表引擎AChartEngine(一) - 简介
- VS2008源代码管理软件组合-visualSVN Server+TortoiseSVN+AnkhSvn
- php程序中调用gzuncompress失败的解决办法