《iOS开发进阶》PDF下载

  • 购买积分:10 如何计算积分?
  • 作  者:唐巧著
  • 出 版 社:北京:电子工业出版社
  • 出版年份:2015
  • ISBN:9787121247453
  • 页数:244 页
图书介绍:本书分工具、实践、理论三大部分。第一部分详细介绍了iOS开发必备的命令行工具、图形工具、插件工具以及第三方网站提供的相关服务。熟练掌握这些iOS开发工具和服务,可以使我们的开发效率得到成倍地提高。第二部分介绍在实际深入iOS开发后,将会遇到的各种问题。第三部分讲解iOS开发涉及的底层原理。主要涉及Objective-C对象模型,Tagged Pointer对象以及Block对象模型。

第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

第一部分:iOS开发工具 9

第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

第二部分:iOS开发实践 81

第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

第三部分:iOS开发底层原理 215

第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