内存优化
- 使用analyze进行静态分析
- 使用instruments的leaks进行动态内存分析
- 查找检测僵尸对象,一般抱错EXC_BAD_ACCESS有可能与僵尸对象有关
优化资源文件
- 图片文件资源的优化
- 音频文件优化
延迟加载
- 图片延迟加载,比如用scrollView显示多张图片
- xib文件延迟加载
数据持久化的优化
- 文件访问的优化
- 避免多次写入很少的数据,最好是当数据积累到一定量的时候一次性写入
- 最好开一个专用的线程负责文件的读写
- 文件的写入采用增量的方式,不要因为部分修改而写入整个文件
- 文件结构优化
- 文件再能满足需求的情况下,尽量减少层次深度
- 文件大小优化
- 通过序列化plist文件减小文件的大小
- 调整文件结构
- NSPropertyListSerialization dataWithPropertyList:+ format: options: error:可以按照指定格式和操作参数,序列化属性列表对象到NSData对象,options包含的枚举值:
- NSPropertyListImmutable 属性列表包含不可变对象
- NSPropertyListMutableContainers 属性列表父节点是可变类型
NSPropertyListMutableContainersAndLeaves 属性列表的父节点和子节点都是可变的
- formater格式设置为nil或者NULL说明自动识别
使用SQLite数据库
- 表结构的优化
- 表的个数不宜超过五个,表中字段说也不宜过多
- 查询优化
- 建立索引,使用where语句,限制返回记录数等
- SELECT * from table LIMIT 10//10表示查询的组大记录数,5表示偏移量,即跳过前五个
- where查询语句的优化:尽量不用LIKE模糊匹配查询,如果可能尽量使用 = ,尽量不要使用in,可以用= 或者 or 代替.
- 插入删除优化
- 使用PRAGMA指令,有一些指令可以改变数据库行为,PRAGMA synchronus指令可以设置数据库同步操作,同步操作是指在插入数据的时候,将数据同事保存到存储媒介中,如果设置为OFF,则关闭了同步,不等待数据保存到存储介质中就可以继续执行插入操作,可以提高大量数据插入时的效率.OC的调用:sqlite3_exec(db,”PRAGMA synchronous = OFF”,nil,nil,nil);
使用Core Data
- core data提供了缓冲,延迟加载等技术,性能比较好,但是有时候性能不如sqlite,这主要与数据存储的类型有关.coreData主要有NSSQLiteStoreType,NSBinaryStoreType和NSInMemoryStoreType,尽量使用NSSQLiteStoreType
可重用对象的使用
- 表视图单元格的重用
- 表头,表尾的重用
- 地图视图可重用对象,主要是MPPinAnnotationView