1.避免或者少用XIB,因为当你加载一个XIB到内存的时候,它所有的内容都会载入内存,包括所有图片(如果是OSX,音频也会被缓存)。故事版是只有实例化的时候才会加载到内存,如果一定要用XIB,那么尽量简单,一个VC一个XIB并且分层管理。好处是XIB调用速度比较快,因为已经在内存中,坏处是内存开销大。
实验:同样的功能,使用XIB和storyboard,观察内存变化。
2.不要阻塞主线程,因为UIKIT所有工作都在主线程中进行,比如绘画,触控和响应输出,影响用户体验。
问题:虽然可以使用异步模式执行,但是遇到一定要等待I/O响应的情况下,比如加载数据,用户去执行其他操作时,可能会遇到数据冲突。
3.UIImageView最好和图片尺寸相同,因为缩放会导致系统开销大,特别是UIImageView嵌入到UIScorllView中时,最后是放到后台,或者下载后进行代码缩放。
4.数组和字典都是连续的内存空间,SET是链表,所以查找访问和增删操作有他们的特点,需要谨慎使用。
5.考虑到网络的因素,下载大文件尽量用压缩和解压缩操作。
6.合理使用reuseindentifier,如果一次性就显示完的就没必要使用,如果需要重复使用同一种格式时,一定要用,否则过多的绘图操作,会影响性能。如果cell行高或者有其他不同,最好先缓存复用,减少重复绘图的开销。
7.重大开销对象,比如 NSDateFormatter和NSCalendar,尽可能重用这些对象。把它们变成属性,并且懒加载它。
8.JSON和XML(小毛驴)的区别,JSON更小且解析速度快,但是需要完整传输后才能解析,XML可以边加载边解析。所以大数据时,一般选择用XML,这样就不用等下完再解析,变下载边解析,下完就解析完了,如果是小数据量就用JSON,方便快速。
9.设置背景图时,如果是模式图片背景,用colorWithPatternImage代替创建UIImageView再添加子视图的方式,可节省内存。