代码编织梦想

一、首页启动速度

  • 启动过程中做的事情越少越好(尽可能将多个接口合并)。
  • 不在UI线程上作耗时的操作(数据的处理在子线程进行,处理完通知主线程刷新节目)。
  • 在合适的时机开始后台任务(例如在用户指引节目就可以开始准备加载的数据)。
  • 尽量减小包的大小。

优化方法:

  • 量化启动时间
  • 启动速度模块化
  • 辅助工具(友盟,听云,Flurry

二、页面浏览速度

  • json的处理(iOS 自带的NSJSONSerializationJsonkitSBJson)。
  • 数据的分页(后端数据多的话,就要分页返回,例如网易新闻,或者 微博记录)。
  • 数据压缩(大数据也可以压缩返回,减少流量,加快反应速度)。
  • 内容缓存(例如网易新闻的最新新闻列表都是要缓存到本地,从本地加载,可以缓存到内存,或者数据库,根据情况而定)。
  • 延时加载tab(比如app5tab,可以先加载第一个要显示的tab,其他的在显示时候加载,按需加载)。
  • 算法的优化(核心算法的优化,例如有些app 有个 联系人姓名用汉语拼音的首字母排序)。

三、操作流畅度优化

  • Tableview 优化(tableview cell的加载优化)。
  • ViewController加载优化(不同view之间的跳转,可以提前准备好数据)。

四、数据库的优化

  • 数据库设计上面的重构
  • 查询语句的优化
  • 分库分表(数据太多的时候,可以分不同的表或者库)

五、服务器端和客户端的交互优化

  • 客户端尽量减少请求。
  • 服务端尽量做多的逻辑处理。
  • 服务器端和客户端采取推拉结合的方式(可以利用一些同步机制)。
  • 通信协议的优化(减少报文的大小)。
  • 电量使用优化(尽量不要使用后台运行)。

六、非技术性能优化

  • 产品设计的逻辑性(产品的设计一定要符合逻辑,或者逻辑尽量简单,否则会让程序员抓狂,有时候用了好大力气,才可以完成一个小小的逻辑设计问题)。
  • 界面交互的规范(每个模块的界面的交互尽量统一,符合操作习惯)。
  • 代码规范(这个可以隐形带来app 性能的提高,比如 用if else 还是switch ,或者是用!还是 ==)。
  • code review(坚持code Review 持续重构代码。减少代码的逻辑复杂度)。
  • 日常交流(经常分享一些代码,或者逻辑处理中的坑)。

七、如果关键代码使用 C/C++/asm 效率更高就使用 C/C++/asm

有时候OC代码效果不高,但是用C实现会很简单,这个时候就用C来实现,提高效率。

八、如果一个方法在一个循环次数非常多的循环中使用,在进入循环前使用 methodForSelector 获取该方法 IMP,然后在循环体中直接使用该 IMP

九、将一些不太重要的任务放在 idle 时运行。

- (void)registerForIdleNotification  
{ 
    [[NSNotificationCenter defaultCenter] addObserver:self 
        selector:@selector(idleNotificationMethod) 
        name:@"IdleNotification" 
        object:nil]; 
    NSNotification *notification = [NSNotification 
        notificationWithName:@"IdleNotification" object:nil]; 
    [[NSNotificationQueue defaultQueue] enqueueNotification:notification 
    postingStyle:NSPostWhenIdle]; 
}  

- (void)idleNotificationMethod 
{ 
    // do something here 
} 

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 本文链接: https://blog.csdn.net/u014219492/article/details/110924164

分析Swift性能高效的原因-爱代码爱编程

绝大多数公司选择Swift语言开发iOS应用,主要原因是因为Swift相比Objc有更快的运行效率,更加安全的类型检测,更多现代语言的特性提升开发效率;这一系列的优点使Swift语言的热度越来越高。 自从2014年Apple发布Swift语言以来,历时六年多,Swift已经发布到5.3版本,在5.0版本已经ABI stability,5.2版本

iOS 实现tabbar点击的动画效果-爱代码爱编程

实现tabbar点击的帧动画效果, 可以用下面两种方法 方法1: 1.在UITabBarController 里面   @interface UITabBarController () <UITabBarControllerDelegate> //注意数组是UIImage.CGImage @property (nonatomic

iOS 边学边记 性能优化篇 一-爱代码爱编程

前言 很多时候我们做APP,不是完成相关的功能就行,很多时候需要我们不断的进行优化,特别对于像淘宝和微信等巨型app来说,如果没有优化,那会是什么样的结果,一定会有很多人“脱坑”,又何谈发展啊。 下面我们就说一下iOS性能优化。 一、 用ARC管理内存 ARC和iOS5一起发布,它避免了最常见的也就是经常是由于我们忘记释放内存所造成的内存泄露。它自

iOS App转让流程-爱代码爱编程

工作中避免不了,公司要求App账号改变,需要转让App.记录一下转让流程. 例如,A账号中有一个App需要转让到B账号中. 如果只有你一个人来操作这些,那么,先登录A账号记录一下App的信息,已经A账号中的一些信息. 如果是两个人一起 ,那就直接开始操作就行了. 登录A账号AppStoreConnect 找到App.进入App详细信息,默认在AppSto

ios系统可用内存获取-爱代码爱编程

ios系统可用内存获取 vm_statistics_data_t vmStats; mach_msg_type_number_t infoCount = HOST_VM_INFO_COUNT; kern_return_t kernReturn = host_statistics(mach_host_self(),

iOS开发中的常用调试工具(一): LLDB-爱代码爱编程

日常开发中我们经常使用断点来帮助我们调试解决问题, 但其实断点只是LLDB的一小部分而已, 除此之外还有许多更强大的隐藏功能可以帮助我们进行开发中的调试. 什么是LLDB LLDB的全称是Low level Debug, 是Xcode内置为我们提供的强大调试工具, 当程序运行到断点处, LLDB就会出现在控制台中, 能帮助我们进行更加丰富的流程控制和数

iOS 边学边记 性能优化篇 一-爱代码爱编程

前言 很多时候我们做APP,不是完成相关的功能就行,很多时候需要我们不断的进行优化,特别对于像淘宝和微信等巨型app来说,如果没有优化,那会是什么样的结果,一定会有很多人“脱坑”,又何谈发展啊。 下面我们就说一下iOS性能优化。 一、 用ARC管理内存 ARC和iOS5一起发布,它避免了最常见的也就是经常是由于我们忘记释放内存所造成的内存泄露。它自

Swift版ViewPager之Tabman 简单使用-爱代码爱编程

前言: Android上的ViewPager/ViewPager2为同级多页面切换带来了很好的体验。iOS系统中并没有提供类似的原生控件,如果要使用UIPagerViewController等进行自定义封装对于初学者而言难度则过高。这里uias提供了开源组件Tabman,其具有易理解、上手快等优点。鉴于网络上并没有几篇文章关于该组件的(也有寥寥几篇,质量

iOS开发问题之:Xcode打包失败IPA processing failed-爱代码爱编程

打包发现失败了,提示IPA processing failed,查看日志:IDEDistribution.standard.log image.png 发现是因为项目中使用的SDK支持i386,x86_86这个架构,猜测是iOS13强制不支持模拟器架构打包。 各种架构解释: 模拟器32位处理器测试需要i386架构,(iphone5,iphone

iOS App转让流程-爱代码爱编程

工作中避免不了,公司要求App账号改变,需要转让App.记录一下转让流程. 例如,A账号中有一个App需要转让到B账号中. 如果只有你一个人来操作这些,那么,先登录A账号记录一下App的信息,已经A账号中的一些信息. 如果是两个人一起 ,那就直接开始操作就行了. 登录A账号AppStoreConnect 找到App.进入App详细信息,默认在AppSto

iOS 边学边记 NSSet于NSArray的区别及基本用法-爱代码爱编程

首先,NSSet和NSArray功能性质一样,用于存储对象,属于集合。但是和NAArray不一样的是它属于 “无序集合”,在内存中存储方式是不连续的,而NSArray是 “有序集合” 它内存中存储位置是连续的。 其次,NSSet的效率确实是比NSArray高的,因为它主要用的是hash算法,我的理解中,NSSet在集合中寻找一个元素的时候是一针见血,找到

IOS 代理模型-爱代码爱编程

代理模式在IOS经常使用,在IOS中使用代理模式非常简单。 A类文件(协议) a.h 中声明协议 @protocol Button <NSObject> // 声明代理协议 - (void) onClick; // 可以代理的方法 - (void) onDown: (UIButton*) event; // 可以代理的方法