性能优化
大飞哥666
这个作者很懒,什么都没留下…
展开
-
iOS线上防Crash处理并上传未发生的崩溃日志,降低线上APP崩溃率
线上APP的崩溃率一直是衡量APP用户体验的重要条件之一,所以,我们很有必要做一些安全防护,让APP尽可能少的产生Crash,提高用户体验。在以前的项目中零零散散做过一些防护,这次专门为平台封装了一个Pod库,供各个业务线直接引用。 其实,在开发过程中我们通过设置Xcode配置项、代码里边做判断、加宏编译等可以发现和避免很多Crash,如代码里边使用respondsToSel...原创 2020-04-30 17:59:47 · 2334 阅读 · 5 评论 -
关于2020年平台架构待优化事项总结
1、安全、逆向工程:明文字符串加密、防止动态库注入、防止App被二次签名、增加反编译破解难度、现有二次打包方案优化。2、UI线程卡顿监控工具的实现:基于Runloop和UI线程的FPS做到实时监控线程卡顿,并将当前卡顿线程的callstack(堆栈信息)获取,定位到产生卡顿的具体代码。实现逻辑:利用Runloop的CFRunLoopObserverRef监听kCFRunLoopBeforeS...原创 2020-01-10 14:26:12 · 1663 阅读 · 0 评论 -
iOS启动速度优化总结
随着项目越做越大,代码和业务量越来越多,这时候每次启动APP的时候就会花费较长的时间,这对用户来说体验很不好。所以,针对APP启动时间的优化还是很有必要的。 关于APP启动时间的分析和优化可以以main()为分界点,分为main()方法执行之前的加载时间(pre-main time)和main()之后的加载时间。那么,如何定量的测量这两个阶段具体的执行时间呢,下面先给...原创 2019-07-18 16:03:50 · 7050 阅读 · 1 评论 -
WebView性能、体验分析与优化
因为客户端WebView的展示需要经过多方才能完成(从后台到前端),所以,本文针对WebView的性能优化涉及到iOS/Android、Web前端、后台服务器等相关方。WebView性能优化总结:一个加载网页的过程中,native、网络、后端处理、CPU都会参与,各自都有必要的工作和依赖关系;让他们相互并行处理而不是相互阻塞才可以让网页加载更快:WebView初始化慢,可以在初始...原创 2019-07-10 16:41:07 · 2947 阅读 · 0 评论 -
iOS 代码使用 C++ 的 zero-cost abstraction 特性
不少 iOS 项目里都有 C++ 代码的痕迹,Objective-C 和 C++ 虽然都是 C 的 superset,但二者在语言特性上存在很大差异,Objective-C 的 runtime 使其语言的特性更丰富更易使用,但代价是会增加性能损耗以及编译后的 binary size。很多成熟项目开发到一定阶段,会关注一些关键指标,比如 App size,现在超过 100 M 的 App 比比皆...转载 2019-04-16 10:36:05 · 454 阅读 · 0 评论 -
iOS App组件化开发实践
iOS App组件化开发实践前因其实我们这个7人iOS开发团队并不适合组件化开发。原因是因为性价比低,需要花很多时间和经历去做这件事,带来的收益并不能彻底改变什么。但是因为有2~3个星期的空档期,并不是很忙;另外是可以用在一个全新的App上。所以决定想尝试下组件化开发。所谓尝试也就是说:去尝试解决组件化开发当中的一些问题。如果能解决,并且有比较好的解决方案,那就继续下去,否则就放弃。背景脱离实际情...转载 2016-09-26 11:52:41 · 11163 阅读 · 4 评论 -
iOS性能优化总结
原文链接:https://github.com/skyming/iOS-Performance-Optimization关于 iOS 性能优化梳理: 基本工具、业务优化、内存优化、卡顿优化、布局优化、电量优化、 安装包瘦身、启动优化、网络优化等 —— 由_skyming_分享关于iOS 性能优化梳理: 基本工具、业务优化、内存优化、卡顿优化、布局优化、电量优化、 安装包瘦身、启动优化、网络...原创 2017-04-28 16:08:43 · 623 阅读 · 0 评论 -
iOS软件包瘦身与优化
1.LinkMap解析工具:检查项目中每个类或者库占用大小(下载地址)注意:如果用模拟器查看的话,位置在这里,如下图2.LSUnusedResources工具:查找项目中没有使用的文件资源(下载地址),如下图...原创 2017-05-25 17:04:11 · 468 阅读 · 0 评论 -
iOS开发 调试 网络限速
在iOS开发中,针对不同网络状况做一下测试处理是很有必要的。但是我发现还是有一些iOS开发者不太注意到不同网络环境下的调试问题,或者说不清楚如何调试这种情况。下面我将针对真机和模拟器分别做简单的说明。告诉大家如何模拟不同的网络状况。1.真机情况下其实Apple在iOS系统中预置了网络调试工具,但是只有添加过测试设备,并使用XCode连接下设备才能激活.这时只要去设置中就可以看到多出来一项:开发者p...转载 2017-09-06 11:29:04 · 830 阅读 · 0 评论 -
iPhone设置中的“开发者”选项介绍和总结
在iPhone手机上,在调试App时候在设置里边有个开发者选项,我们可以借助这个功能来检验App的性能,优化我们的项目。具体可以参考这篇文章:http://www.jianshu.com/p/a1d075b3472c...原创 2017-09-06 11:49:33 · 71529 阅读 · 0 评论 -
TableView性能优化
TableView性能优化是一个老生常谈的问题了,最近也正在做TableView的性能优化,在此我也做一个总结:1.UITableViewCell重用机制?UITableView只会创建一屏幕(或者一屏幕多一点)的cell,其他都是取出来重用的。每当cell滑出屏幕的时候,就会放到一个集合中,当要显示某一位置的cell时,会先去集合中取,有的话,就直接拿出来显示,没有在创建。2.tableView...原创 2018-03-01 16:28:16 · 524 阅读 · 0 评论 -
iOS界面卡顿分析和优化:Instrument 调试界面卡顿(更新:离屏渲染)
更新:2019年7月10号卡顿分析方案:1、根据主线程Runloop的状态(kCFRunLoopBeforeSources和kCFRunLoopAfterWaiting,即正在处理任务的状态),做实时监控主线程卡顿。(可以参考:iOS实时卡顿监控)2、监控FPS,要保持流畅的UI交互,App 刷新率应该努力保持在 60fps。(可以参考:微信读书团队GYMonitor工具)...原创 2018-03-01 16:35:10 · 5984 阅读 · 0 评论 -
YYKit作者之 iOS保持界面流畅的技巧
话不多说,精品就在下边:ibireme博客地址:https://blog.ibireme.com/2015/11/12/smooth_user_interfaces_for_ios/更新:最近花时间又专门读了一下YYKit中关于缓存的源码(YYCache),如果有想了解和学习YYCache源码的同学,可以配合下面这篇文章研究一下:YYCache源码解析: https://juejin.im/pos...原创 2018-03-08 18:51:23 · 4245 阅读 · 0 评论 -
使用System Trace工具分析CPU线程调度和内存调度
什么是System TraceSystem Trace一直作为instruments中一个默默无闻的功能出现。可能很多人并不了解System Trace,那么我们先来看看苹果工程师为System Trace写的简历吧。System Trace Resume意思是,这个模板提供了系统行为的全面信息。它显示线程的调度、系统线程的转化和内存使用情况。这个模板可以使用在OS X或iOS中。还是不懂???简...转载 2018-03-12 17:02:32 · 7180 阅读 · 0 评论 -
使用 Instruments 检测内存泄漏
内存管理是 iOS 里一大重要内容,经历过 MRC 时代的开发者或多或少都被引用计数折磨过,后来苹果推出了 ARC (Automatic Reference Counting),这一技术大大减轻了内存管理的工作量,也降低了因内存管理而出错的概率。但在 ARC 下还是有一些场景会导致内存泄漏,例如循环引用、强引用不再使用的对象。Instruments Leaks我写了一个 Demo 来进行下面的演示...转载 2018-03-12 18:09:29 · 536 阅读 · 0 评论