iOS App性能优化实践指南
文章平均质量分 88
性能优化是一个大的问题,所以首先是需要把这个问题分而化之,把它分解成一个个影响App性能的小问题才能进行解决。
H.A.N
Objective-C、Swift、热更新、APICloud跨平台开发、Flutter学习实践指南、性能优化实践指南。GitHub:https://github.com/HanQiGod
展开
-
iOS 性能优化之教你使用Allocations分析内存分配
AllocationsAllocations用来分析静态内存分配。Demo项目Demo AppDemo是一个简单的图片应用:首页只有一个简单的入口;次级页面会读取本地图片,加滤镜,然后按照瀑布流的方式显示出来;第三个页面提供大图显示;运行代码:点击Photos -> 进入main -> 点击一张图,进入详情页 -> Pop直到回到第一个页面,重复这段操作,从X原创 2018-11-19 11:34:19 · 1142 阅读 · 0 评论 -
iOS 漫谈App瘦身
前段时间部门开需求会,砍掉了应用中的部分需求。这简直就是给应用瘦身的良机!这个时候测试又提出来:安卓端的app在应用市场的包只有26M,而iOS端的app在App Store上却有88M。会后,我就找来安卓的测试机,对比了百度、支付宝、微信、京东、新浪和抖音几个App在应用市场和App Store上的大小,数据如下:显而易见,相同的应用,安卓端的应用安装包远小于iOS端。究其原因,笔者虽也查...原创 2018-11-19 09:13:44 · 677 阅读 · 0 评论 -
iOS 性能优化之图片加载和处理
前言本文基于WWDC2018-Image and Graphics Best Practices,对图片加载和处理的思考和总结。本文不是WWDC翻译,如果需要了解视频内容可以点击上面的链接观看。正文图片的显示分为三步:加载、解码、渲染。通常,我们操作的只有加载,解码和渲染是由UIKit进行。什么是解码?以UIImageView为例。当其显示在屏幕上时,需要UIImage作为数据源。...原创 2018-11-08 11:01:39 · 1698 阅读 · 0 评论 -
iOS 所有线程 Autorelease 对象的内存管理
最近面试,然后不管是应届生还是工作两三年的高级工程师都对下面这几个问题比较懵逼,可能是开发中用到的不多,在这里浅浅的讨论下:Autoreleasepool 与 Runloop 的关系ARC 下什么样的对象由 Autoreleasepool 管理子线程默认不会开启 Runloop,那出现 Autorelease 对象如何处理?不手动处理会内存泄漏吗?针对第一个问题,比较容易理解,可以看一...原创 2018-10-11 08:36:50 · 1026 阅读 · 0 评论 -
iOS 最佳实践:重构AppDelegate
引言可能很多读者可能都有这样的经历,迭代维护多年的系统代码量激增,有些模块的代码自己都觉得丑陋,可是却不敢重构,生怕一不小心被拉取祭天,然后来了个愣头青实习生正好参与这个模块迭代,一顿骚操作后这个模块炸了,那么面对屎山一样焦灼耦合的代码,面对产品汪随着手机壳颜色变化APP主题这种变态需求的时候,如何不在这坨屎山里修修补补,如何重构屎山,让你的代码成为金字塔一样的艺术品?老峰最近读了V8tr写的...翻译 2018-10-12 08:40:09 · 485 阅读 · 0 评论 -
iOS 网络请求优化之取消请求
页面返回的时候,将网络请求取消同一个请求多次请求时,短时间忽略相同的请求同一个请求多次请求时,取消之前发出的请求发送的请求,多次尝试并确保成功最近发现很多网络请求都有可以优化的地方,虽然开发和测试都没有发现问题,但是可以让代码更加的优雅。想到了有四个方面可以优化,亲测有效。1. 页面返回的时候取消网络请求在一个界面进行多个请求的时候,而有可能用户马上点击了返回按钮,那么如果是...原创 2018-09-30 10:06:42 · 2662 阅读 · 0 评论 -
iOS 性能优化篇
苦逼周末加班,无心干活,写一篇文章打发时间。先来谈谈CPU和GPU在屏幕成像的过程中,CPU和GPU起着至关重要的作用CPU( Central Processing Unit, 中央处理器)就是机器的“大脑”,也是布局谋略、发号施令、控制行动的“总司令官”。CPU的结构主要包括运算器(ALU, Arithmetic and Logic Unit)、控制单元(CU, Cont...原创 2018-09-16 14:22:22 · 507 阅读 · 0 评论 -
iOS 性能优化之页面加载速率
前言之前搜罗了网上很多关于iOS性能优化方面的资料 ,本人和我的小伙伴们也用了一些时间针对自己的App进行了App的启动速率、页面的加载速率和 页面的帧率方面进行了优化,所以结合了理论和实践,把我们在实践中主要踩过的坑和需要注意的东西 ,总结了一下,希望可以帮到正在准备进行App的性能优化的你。今天主要讲一下App的页面加载速率的优化。目的为了找到真正使我们的App缓慢的原因,我们...原创 2018-09-14 15:42:22 · 2422 阅读 · 0 评论 -
iOS 教你如何使用iconfont图标
1.什么是iconfonticonFont拆开来看,就是 Icon + Font,这样估计大家应该都能理解是什么,那两者结合是什么呢?没错!就是 IconFont !让开发者像使用字体一样使用图标。如果自己不会做的话,可以直接去阿里的iconfont图标库下载自己需要的图标。2.为什么要使用iconfont在开发项目时,不可避免的会用到各种图标,为了适配不同的设备,通常需要@2x和...原创 2018-09-08 17:12:02 · 690 阅读 · 0 评论 -
iOS 架构思想UIViewController的瘦身之路(一)
前言这篇文章里会涉及如下几个方面: 1、代码的组织结构,以及为何要这样写。 2、那些场景适合使用子控制器,那些场景应该避免使用子控制器? 3、分离UITableView的数据源和UITableViewDataSource协议。 4、MVVM的重点是ViewModel,不是响应函数式。 5、MVVM中,ReactiveCocoa或RXSwift实现数据绑定的带来...原创 2018-08-27 09:18:15 · 973 阅读 · 0 评论 -
iOS 性能优化之列表流畅度优化
这篇文章主要内容是关于列表流畅度的优化。希望这篇文章能够给大家在列表流畅度优化方面带来一点点启示。读者可将本体提及的优化手段或者原理应用到自己的项目中去。但是希望大家在优化过程中,要结合自己的项目具体问题具体分析,因为本文讨论的影响流畅度的因素,可能并不是你的应用流畅性不佳的瓶颈,根据我的经验,大部分流畅的问题都是业务逻辑导致的,反倒什么离屏渲染啊之类大家耳熟能详的流畅度的影响因素在实际项目中...原创 2018-08-21 10:31:51 · 1733 阅读 · 0 评论 -
iOS 网络性能优化之路
一、度量网络性能1.网络带宽用于描述无线网络性能的最常见度量指标就是带宽。在数字无线通信中,网络带宽可以描述为两个端点之间的通信通道每秒钟可以传输的位数。现代无线网络所能提供的理论带宽是很高的。不过请记住,运营商与网络设备提供商引用的带宽数字常常是该项技术的理论最大值,网络设备使用的实际带宽可能与这个最大值之间存在很大的偏差。2.网络延迟度量网络性能的第2个因素是网络延迟,...原创 2018-08-02 14:17:36 · 2996 阅读 · 0 评论 -
iOS 电商网站HTTPS实践之路——性能优化篇
通过分析TLS握手过程的细节我们会发现HTTPS比HTTP会增加多个RTT网络传输时间,既增加了服务端开销,又拖慢了客户端响应时间。因此,性能优化是必不可少的工作。很多文章都集中在服务端的性能优化上,但对于电商行业而言,大部分的用户流量源于App,因此客户端的性能优化配合服务端才能使收益最大化。HTTPS带来的负担 1.1 增加的传输延时 1.2 服务端额外开销服务端性能优化 2.1...原创 2018-05-17 10:30:16 · 1443 阅读 · 0 评论 -
iOS 项目启动时间优化之pre-main 时间
苹果为查看 pre-main 提供了支持,具体配置如下,配置的 key 为:DYLD_PRINT_STATISTICS。然后再运行项目,Xcode 就会在控制台输出这部分 pre-main 的耗时:Total pre-main time: 2.2 seconds (100.0%) dylib loading time: 1.0 seconds (45.2%)re原创 2017-12-05 14:58:03 · 4389 阅读 · 0 评论 -
iOS 重构代码 - 我是如何删掉 6 万行代码并且不删减原有功能的
我列个列表吧:删除没用到的第三方库删除不合理的第三方库,使用系统自带的或者自己造轮子删除定义好但是没有用到的变量删除 import 进来但是没有用到的头文件删除更旧项目留下来的用不到的逻辑Controller 层不合理的层级结构重构,无用代码清理View 层不合理的结构重构Service 层冗余的写法重构Model 层不合理的写法重构拆开不合理的耦合耦合一个类别的模块修复了多处内存泄露修复了多处循...原创 2017-12-16 09:35:36 · 2414 阅读 · 1 评论 -
iOS 快速创建常用UI,使代码更加整洁并且提高开发效率(1)
名称:HQUIKit作用:快速创建常用的UI,使代码更加整洁并且提高开发效率~前言作为一个iOS开发工程师,经常会写一些无聊的初始化方法,我觉得很浪费时间,所以就整理了一下,这个结合SDAutoLayout使用我觉得比较方便~演示示例:1.Alert2.UILabel原创 2017-11-29 09:44:07 · 1187 阅读 · 0 评论