黑马程序员IOS面试宝典之iOS性能优化_第1页
黑马程序员IOS面试宝典之iOS性能优化_第2页
黑马程序员IOS面试宝典之iOS性能优化_第3页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、黑马程序员:IOS面试宝典之iOS性能优化1. 平时你是如何对代码进行性能优化的?利用性能分析工具检测,包括静态An alyze工具,以及运行时Profile工具,通过Xcode工具栏中Product->Profile可以启动,启动后界面如下比如测试程序启动运行时间,当点击Time Profiler应用程序开始运行后就能获取 到整个应用程序运行消耗时间分布和百分比为了保证数据分析在统一使用场景真实需要注意一定要使用真机,因为此时模拟器是运行在Mac上,而Mac上的CPU往往比iOS设备要快。为了防止一个应用占用过多的系统资源,开发iOS的苹果工程师门设计了一个“看门狗”的机制。在不同的场

2、景下,“看门狗”会监测应用的性能。如果超出了该场景所规定的运行时间,“看门狗”就会强制终结这个应用的进程。开发者们在crashlog 里面,会看到诸如0x8badf00d 这样的错误代码。2. 优化 Table View为了保证table view 平滑滚动,确保你采取了以下的措施:? 正确使用 'reuseldentifier'来重用 cells?尽量使所有的 view opaque ,包括cell自身? 如果cell内现实的内容来自 web,使用异步加载,缓存请求结果? 减少subviews 的数量?尽量不适用'cellForRowAtlndexPath:'

3、,如果你需要用到它,只用一次然后缓存结使用 'rowHeight','sectionFooterHeight'和 'sectionHeaderHeight'来设定固定的高,不要请求 delegate3. Ullmage加载图片A: imagedNamed 初始化B: imageWithContentsOfFile初始化imageNamed 默认加载图片成功后会内存中缓存图片,这个方法用一个指定的名字在系统缓存中查找并返回一个图片对象如果缓存中没有找到相应的图片对象,则从指定地方加载图片然后缓存对象,并返回这个图片对象而imageWithConte

4、ntsOfFile则仅只加载图片,不缓存.大量使用imageNamed方式会在不需要缓存的地方额外增加开销CPU的时间来做这件事.当应用程序需要加载一张比较大的图片并且使用一次性,那么其实是没有必要去缓存这个图片的,用imageWithContentsOfFile是最为经济的方式,这样不会因为UIImage元素较多情况下,CPU会被逐个分散在不必要缓存上浪费过多时间使用场景需要编程时,应该根据实际应用场景加以区分,UIimage虽小,但使用元素较多问题会有所凸显.1不要在viewWillAppear中做费时的操作viewWillAppear:在view 显示之前被调用,出于效率考虑,在这个方法

5、中不要处理复杂费时的事情;只应该在这个方法设置view的显示属性之类的简单事情,比如背景色,字体等。要不然,用户会明显感觉到view显示迟钝。2在正确的地方使用 reuseIdentifier为rows分配cells的时候,它table view 用 'tableView:cellForRowAtlndexPath:的数据应该重用自UlTableViewCell 。 一个table view 维持一个队列的数据可重用的 UlTableViewCell 对象。3尽量把views设置为透明如果你有透明的 Views你应该设置它们的 opaque属性为YES。原因是这会使系统用 一个最优的方

6、式渲染这些views。这个简单的属性在 IB或者代码里都可以设定。4避免过于庞大的XIB尽量简单的为每个 Controller配置一个单独的XIB,尽可能把一个 View Controller的view层次结构分散到单独的 XIB中去,当你加载一个引用了图片或者声音资源的 nib时, nib加载代码会把图片和声音文件写进内存。在OS X中,图片和声音资源被缓存在 namedcache中以便将来用到时获取5不要阻塞主线程永远不要使主线程承担过多。因为UIKit在主线程上做所有工作,渲染,管理触摸反应,回应输入等都需要在它上面完成,大部分阻碍主进程的情形是你的app在做一些牵涉到读写外部资源的I/O操作,比如存储或者网络。1. dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), A2. /选择一个子线程来执行耗时操作3. dispatch_async(dispatch_get_main_queue(), a4. /返回主线程更新UI5. );6. );6> 在 Ima

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论