1、不要阻塞主线程
由于UIKIt 在主线程上做的所有工作、渲染,管理触摸反应,回应输入等都需要在他上面完成。一直使用主线程的风险:你的APP会出现卡顿的甚至失去反应。大部分阻塞线程的情形是你的APP 在做一些牵涉到读写外部资源额I/O操作,比如网络或存储
2、处理内存警告
一旦系统内存过低,iOS会通知所有运行中App。如果你的APP收到了内存警告,他就需要尽可能释放更多的内存,最好的方式是移除缓存。UIKit提供了集中收集内存警告方法:
1、在Appdelegate 中使用 applicationDidReceiveMemoryWarning:方法
2、在你自定义UIViewController 的子类中覆盖didReceiveMemoryWarning
3、注册并接受 UIApplicationDidReceiveMemoryWarningNotification的通知,一旦接受到通知你就需要释放任何不必要的内存使用
3、复用大开销对象
一些objects 的初始化比较慢,比如NSDateFormatter 和NSCalendar,然而你又不可避免的使用它,比如从JSON和XML中解析数据。要想避免使用这个对象的瓶颈 就需要重用它,可以通过添加属性到你的class里或者创建静态变量来实现。如果第二种方式,对象会在你的App运行时一直存在于内存中(即存在静态区),和单例很相似。
注: 设置一个NSDateFormatter 的速度差不多和创建一个新的一样慢
4、 优化tableView
为了保证TableView you更好的滑动,可以采用一下方法:
1、正确使用ruseIdentifier来重用 cell
2、采用懒加载(延时加载)的方式价在cell上的空间
3、在TableView 滑动时不加载
4、缓存cell 的高度。在呈现cell前,把cell的高度计算好缓存起来,避免每次加载cell的时候都要计算。
5、尽量使用不透明的UI控件
6、使用drawRect
5、选择是否缓存图片
常见的从bundle 中加载图片的方式有两种:
一种是:imageNamed (适合多次加载,会缓存的)
另一种是:imageWithContentOfFile (仅仅只用一次,若多次加载会耗内存)
6、不要阻塞主线程
永远不要阻塞主线程。因为UIKit 在主线程上做所有的工作、渲染、管理触摸反应、回应输入等都需要他在上面完成。一直使用主线程的风险就是如果你的代码真的block了主线程,你的APP会失去反应。大部分阻塞主线程的情形是你的APP在做一些牵涉到读写外部资源的I/O操作。
网友评论