内皮尔|库马尔《iOS 6编程实战》

内皮尔|库马尔《iOS 6编程实战》

作者:内皮尔|库马尔

出版社:人民邮电出版社

出版年:2013-4-1

评分:8.4

ISBN:9787115312181

所属分类:网络科技

书刊介绍

内容简介

iOS开发如日中天,iOS 6又为我们带来了大量的高级特性,从事移动开发的你,还等什么?

本书急开发者之所急,揭秘了多数开发类图书未曾展示过的iOS 6高级特性和开发技巧,带你深入了解iOS 6。作者结合自己多年的实践经验,毫无保留、面面俱到地讲解了如何充分利用强大的SDK将你的移动开发技能发挥到极致。全书涵盖了安全、多任务处理、多平台运行、块与函数式编程、高级文本布局、性能调优,以及如何通过应用内购买功能提高销售业绩。

久经“杀场”的两位作者Rob Napier和Mugunth Kumar在本书中分享了他们为苹果移动设备开发“杀手级”应用的宝贵经验。以下是本书部分精彩内容摘录:

兼容iPhone 5 充分利用集合视图

操作Objective-C运行时 性能调优和消除BUG

用Security Services确保数据安全 面向REST式Web服务创建高性能应用

实现诱人的动画效果 在网络连接质量不一的情况下实现超快缓存

用Core Text打造精妙的文本布局 充分发挥Core Foundation的强大功能

作品目录

目    录

第一部分  全新功能

第1章  全新的系统2

1.1  新功能2

1.1.1  集合视图3

1.1.2  自动布局3

1.1.3  自动引用计数3

1.1.4  应用内购买的托管内容4

1.1.5  社交框架4

1.1.6  UI状态保留4

1.1.7  其他新功能4

1.2  小结6

1.3  扩展阅读6

第2章  熟悉Xcode 4和LLVM编译器7

2.1  了解用户界面8

2.1.1  标签式编辑器9

2.1.2  按键绑定的变化9

2.1.3  工程设置编辑器10

2.1.4  内置的版本控制系统10

2.1.5  工作区10

2.2  单窗口工作方式10

2.3  导航面板11

2.3.1  工程导航面板12

2.3.2  符号导航面板12

2.3.3  搜索导航面板12

2.3.4  问题导航面板12

2.3.5  调试导航面板12

2.3.6  断点导航面板12

2.3.7  日志导航面板13

2.4  辅助功能13

2.5  内置的Interface Builder13

2.6  Xcode之核心:LLVM编译器14

2.6.1  Clang编译器前端15

2.6.2  我是一个Bug!修复我15

2.7  LLVM  4的新功能15

2.7.1  字面量15

2.7.2  字面量和可用性检查18

2.7.3  实例变量的自动合成18

2.8  使用Git进行版本控制19

2.8.1  内置的Git版本控制系统19

2.8.2  版本编辑器19

2.8.3  Git最佳实践19

2.9  Scheme20

2.9.1  为什么使用Scheme20

2.9.2  建议用Scheme实现你的意图21

2.9.3  创建一个Scheme21

2.9.4  共享你的Scheme22

2.10  为编译配置添加注释22

2.10.1  创建xcconfig文件22

2.10.2  重构编译配置文件23

2.11  将代码转换为支持ARC的Objective-C代码23

2.12  Xcode 4 Organizer25

2.12.1  Automatic Device Provisioning25

2.12.2  查看崩溃日志和控制台输出25

2.12.3  查看应用沙盒数据26

2.12.4  管理版本库26

2.12.5  管理应用程序归档26

2.12.6  查看Objective-C和SDK文档26

2.13  小结26

2.14  扩展阅读26

2.14.1  苹果文档26

2.14.2  WWDC讲座27

2.14.3  博客27

2.14.4  网上资源27

2.14.5  图书27

第二部分  熟能生巧

第3章  Objective-C基础知识30

3.1  命名约定30

3.2  自动引用计数32

3.3  属性35

3.3.1  属性修饰关键字36

3.3.2  属性最佳实践37

3.3.3  私有实例变量37

3.4  存取器37

3.5  分类和扩展38

3.5.1  +load方法40

3.5.2  使用关联引用为分类添加数据40

3.5.3  类扩展42

3.6  正式协议和非正式协议42

3.7  小结43

3.8  扩展阅读44

3.8.1  苹果文档44

3.8.2  其他资源44

第4章  Cocoa设计模式45

4.1  理解模型?视图?控制器45

4.1.1  使用模型类46

4.1.2  使用视图类46

4.1.3  使用控制器类47

4.2  理解委托和数据源47

4.3  使用命令模式48

4.3.1  使用目标?动作48

4.3.2  使用方法签名和调用49

4.3.3  使用蹦床52

4.3.4  撤销55

4.4  使用观察者模式55

4.5  使用单例模式58

4.6  小结60

4.7  扩展阅读60

4.7.1  苹果文档60

4.7.2  其他资源61

第5章  通过Objective-C的ARC管理内存62

5.1  Objective-C的ARC基础入门62

5.1.1  历史简介62

5.1.2  手动引用计数与自动引用计数63

5.2  什么是ARC63

5.2.1  在ARC工程中集成非ARC的第三方代码64

5.2.2  在非ARC工程中集成ARC代码64

5.2.3  框架中的ARC代码64

5.2.4  ARC空声明变量67

5.2.5  Objective-C命名约定67

5.2.6  覆盖默认行为67

5.2.7  自由桥接68

5.2.8  ARC内部原理68

5.3  常见的ARC移植错误69

5.4  小结72

5.5  扩展阅读72

5.5.1  苹果文档72

5.5.2  WWDC讲座72

5.5.3  博客73

第6章  熟练使用表视图74

6.1  UITableView类的继承关系74

6.2  熟悉表视图75

6.2.1  UITableViewController75

6.2.2  UITableViewCell75

6.2.3  提高表视图的滚动速度75

6.2.4  自定义非重复表单元82

6.2.5  表视图最佳方案:编写简洁代码,简化控制器内容83

6.3  小结87

6.4  扩展阅读87

6.4.1  苹果文档87

6.4.2  其他资源87

第7章  集合视图与自动布局88

7.1  集合视图88

7.1.1  类与协议88

7.1.2  示例89

7.2  自动布局97

7.2.1  使用自动布局98

7.2.2  了解自动布局98

7.2.3  相对布局约束98

7.2.4  视觉化格式语言101

7.2.5  调试布局错误102

7.3  小结103

7.4  扩展阅读104

7.14.1  苹果文档104

7.14.2  WWDC讲座104

第8章  绘图功能105

8.1  iOS的不同绘图系统105

8.2  UIKit和视图绘图周期106

8.3  视图绘制与视图布局108

8.4  自定义视图绘制108

8.4.1  通过UIKit绘图109

8.4.2  路径109

8.4.3  理解坐标系111

8.4.4  重新调整大小以及内容模式114

8.4.5  变形115

8.4.6  通过Core Graphics进行绘制117

8.4.7  混用UIKit与Core Graphics120

8.4.8  管理图形上下文121

8.5  优化UIView绘制123

8.5.1  避免绘图123

8.5.2  缓存与后台绘制123

8.5.3  自定义绘图与预渲染123

8.5.4  像素对齐与模糊文本124

8.5.5  透明、不透明与隐藏125

8.6  CGLayer125

8.7  小结127

8.8  扩展阅读127

8.8.1  苹果文档127

8.8.2  其他资源128

第9章  Core Animation 129

9.1  视图动画129

9.2  管理用户交互131

9.3  图层绘制132

9.3.1  直接设置内容134

9.3.2  实现display方法134

9.3.3  自定义绘图135

9.3.4  在自己的上下文中绘图136

9.4  移动对象136

9.4.1  隐式动画137

9.4.2  显式动画137

9.4.3  模型与表示138

9.4.4  关于定时140

9.5  三维动画142

9.6  美化图层145

9.7  用动作实现自动动画146

9.8  为自定义属性添加动画147

9.9  Core Animation与线程148

9.10  小结149

9.11  扩展阅读149

9.11.1  苹果文档149

9.11.2  其他资源149

第10章  错误处理150

10.1  错误处理模式150

10.2  断言151

10.3  异常153

10.4  捕获与报告程序崩溃153

10.5  错误和NSError154

10.6  错误处理块156

10.7  日志157

10.7.1  记录敏感信息158

10.7.2  获取日志文件159

10.8  小结159

10.9  扩展阅读159

10.9.1  苹果文档159

10.9.2  其他资源159

第11章  位置服务161

11.1  Core Location框架161

11.1.1  获取用户位置162

11.1.2  使用内置的罗盘获取用户前进方向162

11.1.3  位置服务和用户隐私163

11.2  后台位置服务165

11.2.1  后台获取位置更新165

11.2.2  显著位置变更通知165

11.2.3  区域监控(地理围栏)167

11.3  位置模拟167

11.4  时刻关注电量消耗168

11.5  小结168

11.6  扩展阅读168

第三部分  选择工具

第12章  表视图常用UI范例170

12.1  下拉刷新170

12.2  无限滚动173

12.3  行内编辑与键盘175

12.4  UITableView的动画效果177

12.5  表视图动画的实际应用178

12.5.1  实现折叠列表178

12.5.2  实现选项抽屉180

12.5.3  在表视图单元格中使用手势识别器181

12.6  小结181

12.7  扩展阅读182

第13章  多任务183

13.1  后台运行最佳实践:能力越大责任越大183

13.2  状态恢复系统185

13.2.1  测试状态恢复系统186

13.2.2  选择性加入186

13.2.3  应用启动过程的变化187

13.2.4  状态恢复标识符187

13.2.5  状态编码器与状态解码器188

13.2.6  表视图和集合视图191

13.2.7  状态恢复系统的高级应用192

13.3  多任务和运行循环简介192

13.4  以操作为中心的多任务开发193

13.5  用GCD实现多任务197

13.5.1  GCD和ARC198

13.5.2  源和定时器198

13.5.3  用分派屏障创建同步点199

13.5.4  队列目标和优先级200

13.5.5  分派组201

13.5.6  队列关联数据202

13.5.7  分派数据202

13.6  小结203

13.7  扩展阅读203

13.7.1  苹果文档203

13.7.2  WWDC讲座203

13.7.3  其他资源203

第14章  REST解惑204

14.1  REST简介205

14.2  选择数据交换格式205

14.2.1  在iOS中解析XML205

14.2.2  在iOS中解析JSON206

14.2.3  XML与JSON207

14.2.4  模型版本化208

14.3  假想的Web服务208

14.4  重要提醒209

14.5  RESTfulEngine架构(iHotelApp示例代码)209

14.5.1  NSURLConnection与第三方框架209

14.5.2  创建RESTfulEngine210

14.5.3  使用访问令牌对API调用进行认证213

14.5.4  在RESTfulEngine.m中覆盖相关方法以添加自定义认证头部213

14.5.5  取消请求214

14.5.6  请求响应214

14.5.7  对JSON数据进行键值编码215

14.5.8  列表页面的JSON对象与详细页面的JSON对象217

14.5.9  嵌套JSON对象217

14.5.10  少即是多219

14.5.11  错误处理219

14.5.12  本地化221

14.5.13  使用分类处理其他格式221

14.5.14  在iOS中提升性能的小技巧222

14.6  小结222

14.7  扩展阅读222

14.7.1  苹果文档222

14.7.2  其他资源223

第15章  通过安全服务巩固系统安全224

15.1  理解iOS沙盒224

15.2  保证网络通信的安全225

15.2.1  证书工作原理226

15.2.2  检验证书的有效性228

15.2.3  判断证书的可信度231

15.3  使用文件保护233

15.4  使用钥匙串234

15.5  使用加密236

15.5.1  AES概要237

15.5.2  使用PBKDF2将密码转换成密钥237

15.5.3  AES模式和填充239

15.5.4  初始化向量240

15.5.5  使用HMAC进行认证241

15.5.6  错误的密码241

15.5.7  进行单槽加密242

15.5.8  提高CommonCrypto的性能244

15.5.9  组合使用加密和压缩247

15.6  小结247

15.7  扩展阅读248

15.7.1  苹果文档248

15.7.2  WWDC讲座248

15.7.3  其他资源248

第16章  在多个苹果平台和苹果设备上运行应用249

16.1  开发多平台应用249

16.1.1  可配置的目标设置:Base SDK和Deployment Target250

16.1.2  支持多个SDK时的注意事项:框架、类和方法250

16.1.3  检查框架、类和方法的可用性252

16.2  检测设备的功能253

16.2.1  检测设备及判断功能253

16.2.2  检测硬件和传感器254

16.3  应用内发送Email和短信258

16.4  检查多任务支持258

16.5  支持iPhone 5259

16.6  UIRequiredDeviceCapabilities260

16.7  小结261

16.8  扩展阅读262

16.8.1  苹果文档262

16.8.2  其他资源262

第17章  国际化和本地化263

17.1  什么是本地化263

17.2  本地化字符串264

17.3  对未本地化的字符串进行审查265

17.4  格式化数字和日期266

17.5  nib文件和Base Internationalization269

17.6  本地化复杂字符串270

17.7  小结272

17.8  扩展阅读272

17.8.1  苹果文档272

17.8.2  WWDC讲座272

第18章  通过应用内购买提高销售业绩273

18.1  开始之前273

18.2  应用内购买什么273

18.2.1  禁止通过应用内购买出售的产品274

18.2.2  重新思考你的商业模式275

18.3  在iTunes Connect上设置产品配置275

18.3.1  第一步:为你的应用创建一个新的App ID276

18.3.2  第二步:生成配置文件277

18.3.3  第三步:创建应用的产品项277

18.3.4  第四步:创建应用内购买产品项278

18.3.5  第五步:生成共享密钥279

18.3.6  第六步:创建测试账户279

18.3.7  第七步:创建托管内容279

18.4  实现应用内购买281

18.5  MKStoreKit简介281

18.5.1  为什么要用MKStoreKit281

18.5.2  MKStoreKit的设计282

18.5.3  定制MKStoreKit283

18.6  实现购买285

18.7  下载托管内容285

18.8  测试代码286

18.9  排错286

18.9.1  无效的产品ID286

18.9.2  无法连接iTunes Store286

18.9.3  你已经购买了该产品,但它尚未下载287

18.10  小结287

18.11  扩展阅读287

18.11.1  苹果文档287

18.11.2  博客287

18.11.3  其他资源287

第19章  调试288

19.1  LLDB288

19.2  使用LLDB进行调试288

19.2.1  dSYM文件289

19.2.2  符号化290

19.3  断点291

19.4  观察点294

19.5  LLDB控制台295

19.6  NSZombieEnabled标志298

19.7  不同的崩溃类型299

19.7.1  EXC_BAD_ACCESS299

19.7.2  SIGSEGV300

19.7.3  SIGBUS300

19.7.4  SIGTRAP300

19.7.5  EXC_ARITHMETIC300

19.7.6  SIGILL300

19.7.7  SIGABRT301

19.7.8  看门狗超时301

19.7.9  自定义错误信号处理程序301

19.8  收集崩溃报告302

19.9  第三方崩溃报告服务303

19.10  小结303

19.11  扩展阅读304

19.11.1  苹果文档304

19.11.2  WWDC讲座304

19.11.3  其他资源304

第20章  性能调优305

20.1  性能思维模式305

20.1.1  指导方针一:产品是为了取悦用户才存在的305

20.1.2  指导方针二:设备是为了方便用户而存在的305

20.1.3  指导方针三:做到极致305

20.1.4  指导方针四:用户的感知才是实际的306

20.1.5  指导方针五:关注能带来大收益的方面306

20.2  欢迎走入Instruments的世界306

20.3  查找内存问题308

20.4  查找CPU问题311

20.4.1  Accelerate框架314

20.4.2  GLKit315

20.5  绘图性能315

20.6  优化磁盘访问和网络访问317

20.7  小结318

20.8  扩展阅读318

20.8.1  苹果文档318

20.8.2  其他资源318

第四部分  超越极限

第21章  故事板及自定义切换效果320

21.1  初识故事板320

21.1.1  实例化故事板321

21.1.2  加载故事板中的视图控制器321

21.1.3  联线321

21.1.4  使用故事板来实现表视图323

21.2  自定义切换效果324

21.2.1  还有一个优点325

21.2.2  白璧微瑕326

21.3  使用UIAppearance协议自定义视图326

21.4  小结327

21.5  扩展阅读327

21.5.1  苹果文档327

21.5.2  WWDC讲座327

21.5.3  其他资源327

第22章  Cocoa的大招:键值编码和观察328

22.1  键值编码328

22.1.1  用KVC赋值330

22.1.2  用键路径遍历属性331

22.1.3  KVC和容器类331

22.1.4  KVC和字典335

22.1.5  KVC和非对象336

22.1.6  用KVC实现高阶消息传递336

22.1.7  容器操作符336

22.2  键值观察337

22.2.1  KVO和容器类339

22.2.2  KVO是如何实现的340

22.3  KVO的权衡340

22.4  小结342

22.5  扩展阅读342

22.5.1  苹果文档342

22.5.2  其他资源342

第23章  不同凡想:块和函数式编程343

23.1  什么是块343

23.1.1  为什么要用函数式编程343

23.1.2 “函数式”UIAlertView344

23.2  声明块345

23.2.1  变量作用域346

23.2.2  栈与堆346

23.3  实现块347

23.4  块和并发349

23.4.1  GCD中的分派队列349

23.4.2  NSOperationQueue与GCD分派队列350

23.5  基于块的Cocoa方法351

23.5.1  UIView的动画使用块351

23.5.2  展示和移除视图控制器352

23.5.3  TweetComposer 与应用程序中发送邮件(短信)352

23.5.4  用NSDictionary的enum erationWithBlock遍历字典352

23.5.5  寻找基于块的方法353

23.6  支持情况353

23.7  小结353

23.8  扩展阅读354

23.8.1  苹果文档354

23.8.2  博客354

23.8.3  其他资源354

第24章  离线支持355

24.1  需要离线支持的原因355

24.2  缓存策略356

24.2.1  存储缓存356

24.2.2  缓存版本和失效359

24.3  数据模型缓存359

24.4  缓存版本控制363

24.5  创建内存缓存364

24.5.1  为AppCache设计内存缓存365

24.5.2  处理内存警告366

24.5.3  处理结束和进入后台通知367

24.6  创建URL缓存367

24.6.1  过期模型368

24.6.2  验证模型368

24.6.3  示例368

24.6.4  用URL缓存来缓存图片369

24.7  小结369

24.8  扩展阅读369

24.8.1  苹果文档369

24.8.2  书籍369

24.8.3  其他资源369

第25章  云端数据370

25.1  iCloud370

25.2  第三方云服务提供商372

25.3  Parse373

25.3.1  Parse入门373

25.3.2  Parse的顶层对象374

25.3.3  代码374

25.4  StackMob376

25.4.1  设置StackMob376

25.4.2  登录、上传和获取数据377

25.4.3  StackMob自定义代码377

25.5  后端即服务的缺点378

25.6  小结378

25.7  扩展阅读378

25.7.1  苹果文档378

25.7.2  WWDC讲座378

25.7.3  其他资源379

第26章  精妙的文本布局380

26.1  基本控件:字段、视图和标签380

26.2  UIKit中的富文本381

26.2.1  理解粗体、斜体和下划线381

26.2.2  属性化字符串382

26.2.3  段落样式384

26.2.4  属性化字符串和HTML384

26.3  用Web视图显示富文本385

26.3.1  在Web视图中显示和访问HTML385

26.3.2  响应用户交互386

26.3.3  在滚动视图和表格视图中绘制Web视图386

26.4  Core Text387

26.4.1  用CTFramesetter进行简单的布局387

26.4.2  为非连续路径创建框架388

26.4.3  排版器、文本行、连续文本和字形390

26.4.4  沿着曲线绘制文本391

26.5  小结395

26.6  扩展阅读395

26.6.1  苹果文档395

26.6.2  WWDC讲座395

26.6.3  其他资源396

第27章  创建Core Foundation应用397

27.1  Core Foundation类型397

27.2  命名和内存管理398

27.3  分配器399

27.4  内省400

27.5  字符串和数据400

27.5.1  常量字符串401

27.5.2  创建字符串401

27.5.3  转换为C字符串402

27.5.4  其他字符串操作符404

27.5.5  字符串的支持存储404

27.5.6  CFData405

27.6  容器类型405

27.6.1  CFArray406

27.6.2  CFDictionary406

27.6.3  CFSet和CFBag406

27.6.4  其他容器类型407

27.6.5  回调函数407

27.7  自由桥接408

27.8  小结411

27.9  扩展阅读411

27.9.1  苹果文档411

27.9.2  其他资源411

第28章  深度解析Objective-C 412

28.1  理解类和对象412

28.2  使用方法和属性414

28.3  消息传递如何工作416

28.3.1  动态实现417

28.3.2  快速转发419

28.3.3  普通转发422

28.3.4  转发失败422

28.3.5  各种版本的objc_msgSend423

28.4  方法混写423

28.5  ISA混写426

28.6  方法混写与ISA混写427

28.7  小结427

28.8  扩展阅读427

28.8.1  苹果文档427

28.8.2  其他资源428

索引429

相关推荐

微信二维码