片面提高开发者的技艺程度,工具/实际/理论一步到位;
联合国内特有的开发须要,为iOS开发者量身打造;
国内惟一iOS开发微信公共帐号经营者初次经典分享;
真正适宜iOS中、高级开发者的进阶读物。
内容简介
书籍
计算机书籍
《iOS开发进阶》分工具、实际、理论三大局部。第一局部引见iOS 开发的常用工具,第二局部引见iOS开发中的一些常见的实际阅历,第三局部引见iOS 开发中触及的原理。
假设把成为iOS 开发高手的过程比作武侠小说中的修炼过程的话,工具、实际和理论的学习就分别对应兵器、招式和内功的修炼。《iOS开发进阶》宿愿经过这三方面的综合讲解,片面提高开发者的技艺程度。
作译者
唐巧,Blogger、InfoQ编辑,资深iOS开发者。曾在网易参与过网易邮箱、网易微博、有道云笔记的开发。目前正参与互联网教育公司猿题库的守业,担任猿题库和小猿搜题的iOS版本开发。
青睐写作与分享,长期维护着本人的技术博客、技术微博@唐巧_boy,以及微信公众号iOSDevTips,所写的技术文章也屡次发表在InfoQ网站和《程序员》杂志上。
目录
《iOS开发进阶》
引荐序
iii
第1 章引言 1
1.1 我为什么要写本书1
1.1.1 我的构思1
1.1.2 内容导读1
1.1.3 指标读者2
1.1.4 随书示例代码和订正2
1.1.5 致谢2
1.2 如何提高iOS 开发技艺3
1.2.1 浏览博客3
1.2.2 读书3
1.2.3 看WWDC 视频4
1.2.4 看苹果的民间文档4
1.2.5 看开源名目标代码4
1.2.6 多写代码,多思索4
1.2.7 多和同行交换5
1.2.8 分享5
I 第一局部:iOS 开发工具
第2 章利用CocoaPods 做依赖治理 9
2.1 CocoaPods 简介9
2.2 CocoaPods 的装置和利用10
2.2.1 CocoaPods 的装置10
2.2.2 利用CocoaPods 的镜像索引10
2.2.3 利用CocoaPods 11
2.2.4 查找第三方库11
2.3 留意事项12
2.3.1 关于.gitignore 12
2.3.2 为本人的名目创建podspec 文件12
2.3.3 利用公有的pods 12
2.3.4 不更新podspec 12
2.3.5 生成第三方库的协助文档13
2.3.6 原理13
第3 章网络封包剖析工具Charles 15
3.1 Charles 简介15
3.2 Charles 的装置和利用16
3.2.1 装置Charles 16
3.2.2 装置SSL 证书16
3.2.3 将Charles 设置成系统代理17
3.2.4 Charles 主界面引见18
3.2.5 过滤网络申请18
3.3 利用Charles 帮助iOS 开发19
3.3.1 截取iPhone 上的网络封包19
3.3.2 模拟慢速网络21
3.4 高级性能22
3.4.1 截取SSL 信息22
3.4.2 修正网络申请内容23
3.4.3 修正服务器前往内容25
3.5 Map 性能25
3.6 Rewrite 性能27
3.7 Breakpoints 性能29
3.8 总结30
3.9 参考链接30
第4 章界面调试工具Reveal 31
4.1 Reveal 简介31
4.2 Reveal 的利用32
4.2.1 用Reveal 衔接模拟器调试32
4.2.2 用Reveal 衔接真机调试34
4.2.3 用Reveal 调试其余运用界面34
4.2.4 总结35
4.2.5 参考材料36
第5 章移动统计工具Flurry 37
5.1 Flurry 简介37
5.2 Flurry 的根本利用38
5.2.1 注册和下载对应SDK 38
5.2.2 集成SDK 40
5.2.3 自定义统计项42
5.2.4 查看统计后果43
5.2.5 统计Crashlog 44
5.3 对比和总结45
5.3.1 和其余统计剖析平台的对比45
5.3.2 总结45
第6 章解体日志记载工具Crashlytics 47
6.1 Crashlytics 简介47
6.2 Crashlytics 的利用49
6.3 完成原理和利用体会52
第7 章App Store 统计工具App Annie 55
7.1 App Annie 简介55
7.2 App Annie 的利用56
7.3 App Annie 账号的注册及配置59
7.4 和其余工具的对比60
7.4.1 民间的命令行工具60
7.4.2 其余类似服务61
7.4.3 性能对比61
第8 章Xcode 插件 63
8.1 Xcode 插件治理工具Alcatraz 63
8.1.1 简介63
8.1.2 装置和删除64
8.1.3 利用64
8.1.4 插件门路66
8.2 关于Xcode 的插件机制66
8.3 常用Xcode 插件66
8.3.1 KSImageNamed 66
8.3.2 XVim 67
8.3.3 FuzzyAutocompletePlugin 67
8.3.4 XToDo 67
8.3.5 BBUDebuggerTuckAway 68
8.3.6 SCXcodeSwitchExpander 68
8.3.7 deriveddata-exterminator 68
8.3.8 VVDocumenter 69
8.3.9 ClangFormat 69
8.3.10 ColorSense 69
8.3.11 XcodeBoost 70
第9 章其余工具引见 71
9.1 取色工具:数码测色计(DigitalColor Meter) 71
9.1.1 前言71
9.1.2 利用引见71
9.1.3 其余类似工具:xScope 72
9.2 其余图形工具73
9.2.1 ImageOptim 73
9.2.2 马克鳗74
9.2.3 Dash 74
9.2.4 蒲公英75
9.3 命令行工具75
9.3.1 nomad 75
9.3.2 xctool 76
9.3.3 appledoc 76
II 第二局部:iOS 开发实际
第10 章理解内存治理 81
10.1 引用计数81
10.1.1 什么是引用计数,原理是什么81
10.1.2 咱们为什么需求引用计数83
10.1.3 不要向已经监禁的对象发送消息85
10.1.4 循环引用(reference cycles)成绩85
10.1.5 利用Xcode 检测循环引用88
10.2 利用ARC 90
10.2.1 Automatic Reference Count 90
10.2.2 Core Foundation 对象的内存治理92
第11 章掌握GCD
95
11.1 GCD 简介95
11.2 利用GCD 97
11.2.1 block 的定义97
11.2.2 系统提供的dispatch 方法98
11.2.3 修正block 之外的变量99
11.2.4 后台运转99
11.2.5 总结100
第12 章利用UIWindow 101
12.1 UIWindow 简介101
12.2 为UIWindow 添加UIView 102
12.3 系统对UIWindow 的利用102
12.3.1 WindowLevel 104
12.3.2 手工创建UIWindow 105
12.3.3 不要滥用UIWindow 108
12.3.4 参考材料109
第13 章动态下载系统提供的多种中文字体 111
13.1 性能简介111
13.1.1 前言111
13.1.2 性能引见112
13.1.3 字体列表112
13.2 利用教程113
13.2.1 相干API 引见113
13.2.2 总结115
第14 章利用运用内支付
117
14.1 后台设置117
14.2 iOS 端开发119
14.3 服务端开发121
14.4 留意事项122
第15 章基于UIWebView 的混合编程 123
15.1 混合编程简介123
15.2 利用模板引擎渲染HTML 界面124
15.3 Objective-C 言语和JavaScript 言语相互调用126
15.4 如何传递参数129
15.5 同步和异步129
15.6 留意事项130
15.6.1 线程阻塞成绩130
15.6.2 主线程的成绩130
15.6.3 键盘控制130
15.6.4 CommonJS 规范130
15.7 利用Safari 停止调试131
第16 章平安性成绩 135
16.1 前言135
16.2 网络平安135
16.2.1 平安地传输用户明码135
16.2.2 防止通信协定被随便破解137
16.2.3 验证运用内支付的凭证138
16.3 本地文件和数据平安138
16.3.1 程序言件的平安138
16.3.2 本地数据平安140
16.4 源代码平安140
16.5 总结142
第17 章基于CoreText 的排版引擎 143
17.1 CoreText 简介143
17.2 基于CoreText 的根底排版引擎145
第18 章实战技巧
181
18.1 App Store 与审核181
18.1.1 撤销正在审核的运用181
18.1.2 央求加急审核181
18.1.3 运用在市场的名字182
18.1.4 测试设施数的限度182
18.1.5 如何将运用下架183
18.1.6 如何告发别的运用侵权183
18.1.7 iTunes Connect 后台操作出错184
18.1.8 Metadata Reject 184
18.2 开发技巧184
18.2.1 UILabel 内容模糊184
18.2.2 收起键盘184
18.2.3 NSJSONSerialization 比NSKeyedArchiver 更好185
18.2.4 设置运用内的系统控件言语185
18.2.5 为什么viewDidUnload 被废弃188
18.2.6 多人协作慎用Storyboard 189
18.2.7 避免滥用block 190
18.2.8 合并工程文件的冲突192
18.2.9 疏忽编译警告193
18.3 Xcode 利用技巧193
18.3.1 Xcode 快捷键193
18.3.2 查找技巧195
18.3.3 JavaScript 文件设置调整195
18.3.4 肃清DerivedData 196
18.3.5 target 信息同样197
18.3.6 下载Xcode 197
18.4 调试技巧197
18.4.1 模拟器快捷键197
18.4.2 笼罩装置留意事项197
18.4.3 给模拟器相册添加图片198
18.4.4 获得模拟器中的程序数据198
18.4.5 装置旧版本的模拟器199
18.4.6 模拟慢速网络199
18.4.7 同样断点与符号断点199
18.5 ipa 文件格式199
18.5.1 查看ipa 的内容199
18.5.2 查看ipa 中的图片200
18.6 为工程添加Daily Build 201
18.6.1 前言201
18.6.2 步骤201
18.6.3 遇到的成绩206
18.6.4 总结206
18.7 利用脚本提高开发效率206
18.7.1 删除未利用的图片资源206
18.7.2 用脚本主动生成小尺寸的图片207
18.7.3 反省图片208
18.8 治理代码片段209
18.8.1 代码片段引见209
18.8.2 定义本人的代码片段210
18.8.3 利用Git 治理代码片段211
18.8.4 其余代码片段治理工具211
III 第三局部:iOS 开发底层原理
第19 章Objective-C 对象模型 215
19.1 简介215
19.2 isa 指针215
19.3 类的成员变量217
19.4 对象模型的运用220
19.4.1 动态创建对象220
19.4.2 系统相干API 及运用222
19.4.3 参考文献226
第20 章Tagged Pointer 对象 227
20.1 原有系统的成绩227
20.2 Tagged Pointer 引见228
20.2.1 Tagged Pointer 228
20.2.2 特点230
20.3 留意事项和完成细节231
20.3.1 isa 指针231
20.3.2 64 位下的isa 指针优化231
20.3.3 isa 的bit 位含义232
20.3.4 总结233
20.3.5 参考文献233
第21 章block 对象模型 235
21.1 block 的内部数据构造定义235
21.2 用clang 剖析block 完成237
21.2.1 NSConcreteMallocBlock 类型的block 的完成242
21.2.2 变量的复制243
21.3 留意事项243
21.3.1 避免循环引用243
21.3.2 ARC 对block 类型的影响244
前言