iOS优化笔记

1、内存泄漏问题的解决
找出内存泄露的地方。
方法:
静态分析:静态分析
这个简单的分析代码,比如声明了变量没有使用,重复初始化。
静态分析出结果,不一定泄露。
动态分析:动态分析

选择泄露模板
然后,你就慢慢找吧

2、查找和解决僵尸对象
类似动态优化

3、资源优化
3.1 图片优化。
PNG优化,使用pngcrush工具。可以压缩40%作用,Xcode已经集成,也默认打开了。
经验:如果在本地资源情况下,我们应该优先使用PNG格式文件;如果资源来源于网络,最好采用JPEG 格式文件。

图片是一种很特殊的资源文件。创建UIImage对象时,可以使用类级构造方法+ imageNamed:和实例 构造方法-initWithContentsOfFile:。+ imageNamed:方法会在内存中建立缓存,这些缓存直到应用停止才清除。如果是贯穿整个应用的图片(如图标、logo等),推荐使用+ imageNamed:创建;如果是仅使用一次的图 片,推荐使用下面的语句:
NSString *path = [[NSBundle mainBundle] pathForResource:@”animal-2” ofType:@”png”]; UIImage *image = [[UIImage alloc] initWithContentsOfFile:path];
3.2 还有就是音频,用的不多,不在介绍

4、惰性加载
惰性加载(lazy load)指一些对象不是在应用和视图等初始化时创建,而是在用到它的时候创建。当应用中有一些对象并不经常使用时,惰性加载可以提高程序性能。

5、数据的持久化

6、编译参数设置
Optimization Level编译参数决定了程序在编译过程中的两个指标——编译速度和内存的占用,也决定了 编译之后可执行结果的两个指标——速度和文件大小。如上所述,Optimization Level分为6个级别,各个级别 的含义如下所示。
 -O0。默认级别。不进行任何优化,直接将源代码编译到执行文件中,结果不进行任何重排,编译时间比 较长。主要用于调试程序,可以进行设置断点、改变变量、计算表达式等调试工作。图20-43所示的Debug 情况就是-O0级别。
 -O1(或-O)。最常用的优化级别,不考虑速度和文件大小权衡问题。与-O0级别相比,它生成的文件更小, 可执行的速度更快,编译时间更少。
 -O2。在-O1级别基础上再进行优化,增加指令调度的优化。与-O1级别相比,它生成的文件大小没有变大, 编译时间变长了,编译期间占用的内存更多了,但程序的运行速度有所提高。该级别是应用程序发布时的 最理想级别,在增加文件大小的情况下提供了最大优化。
 -O3。在-O2和-O1级别上进行优化,该级别可能会提高程序的运行速度,但是也会增加文件的大小。
 -Os。这种级别用于在有限的内存和磁盘空间下生成尽可能小的文件。由于使用了很好的缓存技术,它在 某些情况下也会有很快的运行速度。该级别常用于发布iOS设备时,图20-43所示的就是Release为-Os级别
的情况。
 -Ofast。它是一种更为激进的编译参数,它以牺牲浮点数的精度为代价。
选择Optimization Level时,要权衡编译时间、编译内存占用、编译结果文件大小和执行速度等问题。一般情
况下,-O0适合于调试,-Os级别是iOS设备上的应用发布最理想的选择。如果不满意这6个预定级别,用户可以自 定义一个级别来编译。

7、第三方库的使用

社会化分享,现在许多公司都是采用第三方。如:友盟、shareSDk等。

8、多余的NSLog。
这个很简单,通过宏定义可以在发布编译时去掉。

9、不要做无用功
不要在启动时花几百ms来做logging,不要为同样的数据做多次查询
试图重用:对于创建过程昂贵的对象,要重用而不是重新创建
Table View的cell(复用)
Date/Number的formatter(不是每次启动都重新创建)
正则表达式
SQLite语句

10 、NSDateFormatter
NSDateFormatter对象本身初始化很慢,同样还有NSCalendar也是如此.然而在一些使用场景中不可避免要使用他们,比如Json数据解析中.使用这个对象同时避免其性能开销带来性能开销,一般比较好的方式是通过添加属性(推荐)或创建静态变量保持该对象只被初始化一次,而被多次复用.不得不值得一提的是设置一个NSDateFormatter属性速度差不多是和创建新的实例对象一样慢!
这里写图片描述
参考:http://www.jianshu.com/p/9e1f0b44935c

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值