加入收藏 | 设为首页 | 会员中心 | 我要投稿 河北网 (https://www.hebeiwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 业界 > 正文

iOS开拓中常见的机能优化能力

发布时间:2019-03-22 07:05:36 所属栏目:业界 来源:_小迷糊
导读:机能题目的首要缘故起因是什么,缘故起因有沟通的,也有差异的,但归根到底,不过乎内存行使、代码服从、吻合的计策逻辑、代码质量、安装包体积这一类题目。 但从用户体验的角度去思索,当我们置身处地得把本身当做用户去玩一款应用时辰,那么城市在意什么呢?若是

可执行文件优化:

  1. 去除无用代码
  2. 统计库占用,去除无用库
  3. 夹杂类/要领名
  4. 镌汰冗余字符串
  5. ARC->MRC (一样平常不到非凡环境不提议这么做,会进步维护本钱)

缩减iOS安装包巨细是许多中大型APP都要做的事,一样平常起首会对资源文件动手,压缩图片/音频,去除不须要的资源。这些资源优化做完后,我们还可以实行对可执行文件举办瘦身,项目越大,可执行文件占用的体积越大,又由于AppStore会对可执行文件加密,导致可执行文件的压缩率低,压缩后可执行文件占整个APP安装包的体积比例约莫有80%~90%,照旧挺值得优化的。

下面是一些常见的优化方案:

TableViewCell 复用

在cellForRowAtIndexPath:回调的时辰只建设实例,快速返回cell,不绑定命据。在willDisplayCell: forRowAtIndexPath:的时辰绑定命据(赋值)。

高度缓存

在tableView滑动时,会不绝挪用heightForRowAtIndexPath:,,当cell高度必要自顺应时,每次回调都要计较高度,会导致 UI 卡顿。为了停止一再有时义的计较,必要缓存高度。

怎么缓存?

  1. 字典,NSCache。 
  2.  
  3. UITableView-FDTemplateLayoutCell  
  4. [if !supportLineBreakNewLine]  
  5. [endif] 
  6.  
  7. 视图层级优化 
  8.  
  9. 不要动态建设视图 
  10.  
  11. 在内存可控的条件下,缓存subview。 
  12.  
  13. 善用hidden。 
  14.  
  15. [if !supportLineBreakNewLine]  
  16. [endif] 
  17.  
  18. 镌汰视图层级 
  19.  
  20. 镌汰subviews个数,用layer绘制元素。 
  21.  
  22. 罕用clearColor,maskToBounds,阴影结果等。 
  23.  
  24. [if !supportLineBreakNewLine]  
  25. [endif] 
  26.  
  27. 镌汰多余的绘制操纵 
  28.  
  29. 图片 

不要用JPEG的图片,该当行使PNG图片。

子线程预解码(Decode),主线程直接渲染。由于当image没有Decode,直接赋值给imageView会举办一个Decode操纵。

优化图片巨细,只管不要动态缩放(contentMode)。

尽也许将多张图片合成为一张举办表现。

  1. [if !supportLineBreakNewLine]  
  2. [endif] 

镌汰透明view

行使透明view会引起blending,在iOS的图形处理赏罚中,blending首要指的是殽杂像素颜色的计较。最直观的例子就是,我们把两个图层叠加在一路,假如第一个图层的透明的,则最终像素的颜色计较必要将第二个图层也思量进来。这一进程即为Blending。

会导致blending的缘故起因:

UIView的alpha<1。

UIImageView的image含有alpha channel(纵然UIImageView的alpha是1,但只要image含有透明通道,则仍会导致blending)。

  1. [if !supportLineBreakNewLine]  
  2. [endif] 

为什么blending会导致机能的丧失?

缘故起因是很直观的,假如一个图层是不透明的,则体系直接表现该图层的颜色即可。而假如图层是透明的,则会引起更多的计较,由于必要把另一个的图层也包罗进来,举办殽杂后的颜色计较。

opaque配置为YES,镌汰机能耗损,由于GPU将不会做任何合成,而是简朴从这个层拷贝。

  1. [if !supportLineBreakNewLine]  
  2. [endif] 

镌汰离屏渲染

离屏渲问鼎的是在图像在绘制到当前屏幕前,必要先举办一次渲染,之后才绘制到当前屏幕。

OpenGL中,GPU屏幕渲染有以下两种方法:

On-Screen

Rendering即当前屏幕渲染,指的是GPU的渲染操纵是在当前用于表现的屏幕缓冲区中举办。

Off-Screen

Rendering即离屏渲染,指的是GPU在当前屏幕缓冲区以外新开发一个缓冲区举办渲染操纵。

  1. [if !supportLineBreakNewLine] 
  2. [endif] 

小结

(编辑:河北网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读