-
iOS启动时间优化
启动时间应用启动流程iOS应用的启动可分为pre-main阶段和main()阶段,其中系统做的事情依次是: pre-main阶段1.1. 加载应用的可执行文件1.2. 加载动态链接库加载器dyld(dynamic loader)1.3. dyld递归加载应用所有依赖的dylib(dynamic library 动态链接库) main()阶段2.1. dyld调用main() 2.2. 调用UIApplicationMain() 2.3. 调用applicationWillF...…
-
iOS电量优化小Tip(下)
电量测量1.读取官方日志Sysdiagnose。这个方法相对精确一些,有点麻烦的是,我们需要整个获取日志再拿来分析,不太好在线上应用中使用。而且无关数据过多,读取比较艰难。我们可以读取iOS 电量测试实践来了解细节。2.开发者模式配合Instruments打开Developer选项中的Start Logging —> 断开iphone与PC连接 —> 一系列的用户操作 —> Stop Logging —> 连接iphone与PC, 将电量消耗数据导入Instrume...…
-
iOS电量优化小Tip(上)
在现如今的开发中, 电量消耗是一个应用运行效果的一个重要的衡量标准,尤其是直播,运动应用。 设备中的每个硬件模块都会消耗电量。电量的最大消费者是CPU,但这只是系统的一个方面。一个编写良好的应用需要谨慎地使用电能。用户往往会删除耗电量大的应用。除CPU外,耗电量高、值得关注的硬件模块还包括网络硬件、蓝牙、GPS、麦克风、加速计、摄像头、扬声器和屏幕。如何降低电量的消耗,是延长使用时间的关键。我们要关注以下: 判断电池的剩余电量及充电状态 如何分析电源 如何在 iOS 应用中分析电源,...…
-
关于NSArray的二三事
在iOS开发中,我们在非常非常多的地方用到了数组。而关于数组,有很多需要注意和优化的细节,需要我们潜入到下面,去了解。以下,是我长时间工作学习中积攒下来的碎片,积攒了足够多了,就应该拿出来亮一亮了。读书读出来的问题前段日子我为了学习英语,阅读《Effective Objective-C 2.0》的原版的时候,我发现了之前没怎么注意到的一段话: In the case of NSArray, when an instance is allocated, it’s an instance o...…
-
iOS性能优化之路
我在开发iOS的过程中,逐渐形成了一些对iOS性能优化的认识,准备总结出来。恳请各位斧正。在我的眼中,app的性能就像是app运行开发中的货币。我们开发者就像一个组织者,手机本身的性能就是可以提供给我们的演出费用,手机版本就像舞台。出现了新的可以增加性能的技术的时候,我们就要想办法多弄点钱;有些演员价钱过高,我们要考虑是否换个人;有的设备过于陈久了,我们要考虑是否优化或者更换;为了得知哪些地方花的过多了,我们则需要想办法去监控花钱的过程。性能优化到最后的结果,就仿佛在有限的资金支持下,给观...…
-
runtime扯扯扯
前段日子,我又看了一遍sunnyxx的一段有关runtime的分享会视频(不要吐槽AV画质),结合这几年在印象笔记里的各种碎片以及看的书,为自己进行一个知识的整合和梳理。简述Runtime 又叫运行时,是一套底层的,由C语言和汇编实现的API,是 iOS 系统的核心之一。可以说,Objective-C = C + runtime。C语言使用的是静态绑定(static binding),也就是说,在编译期的时候就能觉醒运行时的应该调用的函数。而因为runtime的关系,Objective-C...…
-
《Effective Objective-C 2.0编写高质量iOS与OS X代码的52个有效方法》读书小记
第一条:了解Objective-C语言的起源Objective-C语言是一门面向对象的语言,与C++、Java等有所相似。然而在语法上,则有许多差别。这个差别产生的原因在于,Objective-C是由Smalltalk演化而来,直接借用了或者说继承了很多后者的思想,使用“消息结构”(messaging stricture)而非“函数调用”(function calling)。这个特性使得Objective-C语言,在运行时才回去查找所要执行的方法。实际上,编译器甚至都不关心接受消息的对象是...…