新書推薦:
《
甲骨文丛书·剑桥世界暴力史(第一卷):史前和古代世界(套装全2册)
》
售價:NT$
959.0
《
甲骨文丛书·中华早期帝国:秦汉史的重估
》
售價:NT$
1367.0
《
欲望与家庭小说
》
售價:NT$
449.0
《
惜华年(全两册)
》
售價:NT$
320.0
《
甲骨文丛书·古代中国的军事文化
》
售價:NT$
454.0
《
中国王朝内争实录(套装全4册):从未见过的王朝内争编著史
》
售價:NT$
1112.0
《
半导体纳米器件:物理、技术和应用
》
售價:NT$
806.0
《
创客精选项目设计与制作 第2版 刘笑笑 颜志勇 严国陶
》
售價:NT$
281.0
|
編輯推薦: |
很资深:一线资深工程师5年的工作经验与总结
很图解:近200张图详细讲解iOS优化方法
很实战:100多段实用代码,领会优化精髓
很超值:赠送720分钟界面开发及优化视频教学
|
內容簡介: |
所谓性能,无非是一种指标,在软件开发中,性能指标往往会关注两个方面:效率和消耗。效率主要是指代码的执行效率,动画的流畅度,应用的冷启动时间和热启动时间,网络通讯的阻塞时间等等。消耗只要是指内存的消耗,有没有内存泄露,CPU的占用率,耗电与应用程序包尺寸等。本书主要讨论在iOS应用性能优化中,有哪些性能指标可能是你需要考虑的。并将向你介绍如何使用工具来分析一款iOS应用的性能问题。并且,也会向读者介绍在iOS软件开发过程的更多高级技巧。
|
關於作者: |
张益辉,TicTalk Foundation合伙人,博客笔名珲少,曾就职于唯品会,参与特卖项目《唯品会》、唯品会美妆项目《唯美》、唯品会返利项目《唯享客》。iOS开发、Swift 语言、Objective-C 语言、Java 与JavaScript语言、Android 等相关技术博客370余篇。任麦子学院iOS金牌讲师,良师益友网、51CTO学院、CSND网络学院签约讲师,开源中国高手问答栏目受邀技术专家,博客访问量90多万次。
|
目錄:
|
目录
第1章关于性能你需要知道的事1
1.1衡量应用程序性能优劣的一些标准1
1.1.1代码的执行效率2
1.1.2内存占用4
1.1.3CPU负担与能耗5
1.1.4动画流畅度7
1.1.5网络缓存8
1.1.6应用程序启动时间9
1.1.7应用程序包尺寸9
1.2Xcode断点与静态分析工具10
1.2.1添加自定义断点10
1.2.2为自定义断点添加行为11
1.2.3添加全局类型的断点13
1.2.4Xcode的静态分析工具14
1.3Instruments:性能分析和测试工具16
1.3.1Activity Monitor:活动监视器16
1.3.2Allocations:内存跟踪工具17
1.3.3CoreAnimation:核心动画监测工具19
1.3.4Counters:仪表计数器20
1.3.5Energy Log:能耗记录器21
1.3.6Leaks:内存泄漏检查工具22
1.3.7Network:网络连接检查工具23
1.3.8自定义Instruments工具模板23
1.4使用LLDB调试工具25
1.4.1使用expression指令进行动态代码执行25
1.4.2使用frame指令查看代码帧信息27
1.4.3使用thread相关指令操作线程29
1.4.4其他LLDB常用指令33
1.5日志与埋点34
1.5.1异常分析35
1.5.2使用Bugly异常捕获工具41
1.5.3应用程序埋点43
1.5.4使用Fabric分析工具43
第2章iOS内存管理45
2.1iOS的内存管理模型45
2.1.1关于内存消耗与引用计数45
2.1.2MRC内存管理46
2.1.3关于ARC49
2.1.4属性修饰符51
2.1.5ARC与MRC进行混编53
2.2自动释放内存54
2.2.1关于autorelease方法55
2.2.2自动释放池57
2.2.3系统维护的自动释放池59
2.3杜绝内存泄漏60
2.3.1Block与循环引用61
2.3.2代理与循环引用63
2.3.3定时器引起的内存泄漏65
2.4关于僵尸对象66
2.4.1捕获僵尸对象66
2.4.2处理僵尸对象68
2.5CoreFoundation框架中的内存管理71
2.5.1CoreFoundation中的引用计数71
2.5.2CoreFoundation框架与Foundation框架混用72
2.6扩展:关于id与void*74
2.6.1关于id类型74
2.6.2关于void与void*75
2.6.3解决最初的问题76
第3章应用程序网络与能耗优化77
3.1深入iOS网络开发技术77
3.1.1初识NSURLSession79
3.1.2NSURLConnection的简单应用83
3.1.3请求对象NSURLRequest85
3.1.4请求回执对象NSURLResponse87
3.1.5数据缓存对象NSURLCache88
3.1.6本地用户凭证对象NSHTTPCookie90
3.1.7使用第三方网络诊断库LDNetDiagnoService_IOS92
3.2iOS网络开发及优化秘技96
3.2.1使用Charles抓包工具96
3.2.2使用Charles进行HTTPS抓包100
3.2.3使用Charles进行网络环境模拟102
3.2.4使用Charles添加请求断点104
3.2.5使用Charles进行数据模拟106
3.2.6Charles的请求重写功能108
3.2.7使用Mock.js搭建本地数据模拟服务110
3.2.8学习使用JSONModel库116
3.2.9属性自动生成工具121
3.3定位与地图130
3.3.1使用定位服务130
3.3.2原生地图开发133
3.3.3添加大头针与自定义标注136
3.3.4添加地图覆盖物138
3.3.5检索附近兴趣点和导航服务140
3.4定时器应用146
3.4.1NSTimer的简单应用146
3.4.2关于RunLoop的一些探究148
3.4.3中心化管理NSTimer定时器149
3.4.4CADisplayLink类的应用153
3.4.5使用GCD方式的定时器154
第4章从应用程序启动说起156
4.1应用程序的启动原理156
4.1.1深入UIApplication类156
4.1.2UIApplication相关类别介绍159
4.1.3关于UIApplicationDelegate162
4.2本地通知与远程推送166
4.2.1使用本地推送166
4.2.2远程推送基础169
4.2.3深入理解UserNotification框架174
4.3PushKit框架与CallKit框架189
4.3.1VoIP与PushKit190
4.3.2学习使用CallKit框架192
4.3.3来电拦截与号码识别199
第5章深入iOS视图与动画204
5.1关于视图控制器204
5.1.1UIViewController的生命周期204
5.1.2从StoryBoard加载UIViewController对象的传值陷阱207
5.1.3关于UIViewController的切换209
5.2视图控制器的转场动画210
5.2.1UIViewController的模态跳转转场211
5.2.2导航转场动画的自定义218
5.2.3UITabBarController的转场动画221
5.3列表视图的性能优化221
5.3.1UITableView的构建原理221
5.3.2对UITableView可变行高的优化方式224
5.3.3关于高度不定的列表分区头、尾视图228
5.4iOS图像绘制技术230
5.4.1CGPath路径类231
5.4.2理解图形上下文238
5.4.3颜色与色彩空间252
5.4.4图形变换函数258
5.4.5Patterns模型的应用259
5.4.6绘制梯度渐变视图263
5.4.7进行图像处理268
5.4.8关于层聚合272
5.5iOS核心动画技术275
5.5.1初识CoreAnimation275
5.5.2深入理解CALayer277
5.5.3几种常用的CALayer子类282
5.5.4CoreAnimation动画287
第6章iOS多线程开发技术293
6.1使用NSThread进行线程管理293
6.1.1NSThread中常用类方法293
6.1.2NSThread成员方法和属性的应用295
6.1.3隐式地使用NSThread进行多线程编程296
6.2NSOperation与NSOperationQueue的应用296
6.2.1关于Operation基类的解析296
6.2.2NSBlockOperation类的应用297
6.2.3NSInvocationOperation类的应用299
6.2.4操作之间的依赖关系300
6.2.5NSOperationQueue操作队列的应用301
6.3学习使用GCD303
6.3.1GCD的调度机制303
6.3.2添加任务到调度队列中304
6.3.3使用队列组305
6.3.4GCD对循环任务的处理308
6.3.5GCD中的消息与信号309
6.3.6队列的挂起与开启310
6.3.7使用GCD处理延时任务310
6.3.8数据存取的线程安全问题311
6.3.9GCD模式的单例313
6.3.10关于GCD中的内存管理314
第7章iOS运行时技术315
7.1动态的Objective-C语言315
7.1.1窥探消息转发机制316
7.1.2消息传递与继承链318
7.1.3拯救未知消息的三根救命稻草320
7.1.4你真的需要救命稻草吗324
7.1.5发送消息相关的几个函数328
7.2运行时方法解析331
7.2.1与运行时相关的类操作函数332
7.2.2与运行时相关的实例对象属性操作函数334
7.2.3与运行时相关的实例对象方法操作函数337
7.2.4与运行时相关的协议操作函数340
7.3运行时特性的基本应用341
7.3.1操作变量的巧妙方法341
7.3.2操作方法的巧妙方法345
7.4使用运行时动态修改UILabel的默认字体348
7.4.1使用框架统一处理348
7.4.2使用运行时函数替换UILabel的初始化方法348
7.5设置可自动归档的数据模型基类352
第8章JavaScript与Native交互技术的应用354
8.1JavaScriptCore框架详解354
8.1.1JavaScriptCore框架中的几个核心类355
8.1.2在Native中运行JavaScript脚本代码356
8.1.3在JavaScript脚本中调用Objective-C Native方法358
8.1.4深入JSContext类359
8.1.5深入JSValue类360
8.1.6Objective-C与JavaScript复杂对象的映射365
8.1.7C语言风格的API366
8.1.8设计Hybird App框架371
8.2WebKit框架的应用377
8.2.1WebKit框架概览377
8.2.2使用WKWebViewConfiguration对WebView进行配置379
8.2.3WKWebView中的属性和方法解析382
8.2.4WKWebView中的JavaScript与Native交互384
8.2.5WKNavigationDelegate协议中的方法解析385
8.2.6WKUIDelegate协议中的方法解析388
第9章iOS扩展开发390
9.1Today扩展的应用390
9.1.1创建Today扩展程序391
9.1.2Today扩展与宿主应用程序进行数据交互393
9.2分享扩展的应用396
9.3照片编辑扩展399
9.4自定义键盘扩展400
9.4.1了解UIInputViewController类400
9.4.2创建自定义的数字输入键盘401
9.5iMessage扩展的应用404
9.5.1开发独立的表情包404
9.5.2开发寄宿于宿主应用程序的表情包扩展406
9.5.3开发iMessage App407
9.5.4对开发iMessage App的几点建议418
|
內容試閱:
|
前 言
首先感谢你购买本书作为提高iOS开发技能的学习教程。作为一名最前沿的程序开发者,我非常理解当需要深入学习一门技术却无从下手时的迷茫与急迫感。因此在编写本书时,我尤其注意将重点、难点及开发过程中极易被忽视却十分重要的点突出讲解,希望能够帮助你用最短的学习时间,得到最显著的提高。
阅读本书目录,你会发现,本书不是一本基础的iOS开发教程,如果你没有丝毫的iOS开发基础,那么本书对你来说可能会有难度而且不易理解,如果真是这样,我建议你先学习iOS基础开发知识,再来阅读本书,一定会受益匪浅。
学习一门编程语言、掌握一种程序开发技术会让你从中获得极大的乐趣。科技领域的高速发展使得企业和公司需要越来越多的编程技术人员,市场上的编程书籍琳琅满目,其中的大多数侧重于基础入门与应用实战,就iOS开发来说,如果你想深入地了解这门技术,那么本书是非常好的选择。
本书内容及体系结构
本书分为9章,内容规划如下。
第1章介绍开发一款高性能的iOS应用需要关注的性能指标,并介绍了如何使用工具来监测和优化应用程序的性能。之前你可能只是发现某个界面会卡顿,在学习本章内容后你将可以找到具体是由哪一行代码造成的卡顿。
第2章介绍iOS开发中的内存管理技术,如果你是iOS开发初学者,那么你可能从未关心过内存管理的问题,但是随着学习的深入,你需要清楚地了解内存管理的原理和需要注意的事项。在混合开发、底层框架开发中,内存管理更是重中之重。要成为一名卓越的iOS开发工程师,这是你必须迈出的一步。
第3章介绍网络技术在iOS开发中的应用,并提供一些思路来解决网络卡顿问题,提升用户体验。还会介绍一些常用的辅助工具,帮助你对网络进行检查,对当前网络状态进行快照或模拟操作。
第4章介绍应用程序的启动流程及与启动流程相关的一些技术点,如推送的应用、高级的VoIP推送和网络电话功能的应用。
第5章深入介绍iOS视图与动画的相关内容,重点介绍UITableView组件的优化方法与思路,完整介绍动画技术在iOS开发中的应用。
第6章系统地介绍iOS多线程开发技术的应用,包括NSThread、NSOperation及高级的GCD相关用法。
第7章介绍动态特性与运行时,这部分内容也是iOS程序开发的高级技巧,在很多情况下你可能都不需要使用到这些技术,但是学习它们可以帮助你更好地理解程序的运行原理,也可以帮助你一眼看出一些奇怪问题出现的核心原因。
第8章介绍JavaScript技术在iOS开发中的应用,主要介绍Native与WebView的交互方式以及高级的JavaScript线程应用。在学习本章之后,你就能够很轻松地理解Hybird App混合开发的原理。
第9章是本书的扩展章节,主要介绍App Extension的相关应用及数据交互的方法,灵活地使用App Extension可以为你的应用程序添加有趣而实用的新功能。
希望本书可以帮助你达成自己的学习目标,下面的博客是我几年来的编程生活积累的一些财富,里面有关于iOS开发、Android开发、前后端开发以及编程语言相关的400余篇博客,如果需要,你可以挑选自己感兴趣的内容阅读:
https:my.oschina.netu2340880
你也可以在下面的网站找到我的一些教学资源:
https:edu.csdn.netlecturercourse_list
我是一名知识传播者,也是学习者,如果你在学习的过程中,遇到任何问题或者发现了本书的遗漏或错误之处,可以与我联系,我的QQ号码是:316045346。当然,在出版前,我和编辑以及所有校验和整理本书的老师都付出了很多汗水,尽量保证让它尽善尽美地呈现在你的面前。
最后,感谢编辑在本书编写过程中提出的宝贵意见和在修订过程中的辛苦工作,感谢吕远、练向、帅坤、东科以及其他同学和同事在生活和工作中给我的帮助和启发,大家经常性的技术讨论使我受益颇多。感谢其他所有为本书出版付出汗水的人们。如果本书可以给你带来提高与帮助,那么这一切都是值得的。
本书读者对象
? 在职的iOS开发工程师
? 编程爱好者
? iOS开发初学者
? 关注iOS项目优化的工程师
? 需要深入学习iOS程序工作原理的工程师
|
|