
作者简介:Rob Napier2005年开始从事Mac开发,iPhone SDK第一版发布时就开始开发iPhone应用。他是The Daily、PandoraBoy和Cisco Mobile的作者,Stack Overflow的主要贡献者,并维护技术博客Cocoaphony(cocoaphony.com),主要关注组网、性能、安全和MVC模式。Mugunth Kumar独立iOS开发者,新加坡南洋理工大学硕士研究生,主修信息系统。其个人博客(blog.mugunthkumar.com)主要发表移动开发、软件可用性、用户体验和iOS相关的文章。从事iOS开发前,他在财富500强企业通用电气和霍尼韦尔担任Windows和.NET平台软件顾问。他关注的领域包括编程方法论(面向对象和函数式编程)、移动开发以及可用性设计。译者简介:美团移动美团移动团队于2011年成立,经过三年多的发展,建立了iOS、Android、WP和H5多个平台上的App,形成了团购、猫眼、酒店三足鼎立的局面,如今更是承载了美团70%多的交易额,是美团对移动互联网时代最好的诠释。
本书深入介绍iOS 7新特性和新功能,涵盖iOS 7大部分新增特性,包括新的后台操作、Core Bluetooth、UIKit动力学以及TextKit。另外还介绍了如何处理新的扁平化UI,并新增了一章你可能不知道的“小技巧”。如果读者熟练掌握C和C++,读完本书即可创建性能优异的iPhone、iPad和iPod touch应用。本书主要内容包括: iOS 7新特性和新功能概览; 深入解析多任务、多平台、安全服务、应用内购买、自动布局等高级主题; 全面介绍REST、高级GCD、本地化和国际化、Core Bluetooth; 细致讲解UIKit动力学、自定义过渡及其他内容。本书助你充分利用iOS 7新特性,挑战编程极限,打造非凡应用。
第一部分 全新功能第1章 全新的系统 21.1 新的UI 21.2 UIKit Dynamics和Motion Effects 31.3 自定义过渡效果 41.4 新的多任务模式 41.5 Text Kit 51.6 动态字体 51.7 MapKit集成 51.8 SpriteKit 51.9 LLVM 5 51.10 Xcode 5 71.10.1 nib文件格式的变化 71.10.2 源代码控制集成 71.10.3 自动配置 71.10.4 对调试导航面板的改进 81.10.5 文档浏览器 81.10.6 Asset Catalog 91.10.7 测试导航面板 91.10.8 持续集成 101.10.9 Auto Layout改进 101.10.10 iOS模拟器 101.11 其他 101.12 小结 111.13 扩展阅读 11第2章 世界是平的:新的UI范式 122.1 清晰、依从和层次 122.2 动画、动画、动画 122.2.1 UIKit Dynamics 132.2.2 UIMotionEffect 132.3 着色 142.4 用半透明实现层次和上下文 142.5 动态字体 152.6 自定义过渡效果 162.7 把应用过渡(迁移)到iOS 7 172.7.1 UIKit变化 172.7.2 自定义设计 172.7.3 支持iOS 6 172.8 小结 202.9 扩展阅读 20第二部分 充分利用日常工具第3章 你可能不知道的 223.1 命名最佳实践 223.1.1 自动变量 223.1.2 方法 223.2 属性和实例变量最佳实践 233.3 分类 243.4 关联引用 263.5 弱引用容器 273.6 NSCache 283.7 NSURLComponents 283.8 CFStringTransform 293.9 instancetype 303.10 Base64和百分号编码 313.11 -[NSArray firstObject] 313.12 小结 313.13 扩展阅读 32第4章 故事板及自定义切换效果 334.1 初识故事板 334.1.1 实例化故事板 344.1.2 加载故事板中的视图控制器 344.1.3 联线 344.1.4 使用故事板来实现表视图 364.2 自定义切换效果 374.2.1 优点 394.2.2 白璧微瑕——合并冲突 394.3 小结 394.4 扩展阅读 39第5章 掌握集合视图 415.1 集合视图 415.1.1 类与协议 415.1.2 示例 425.2 用集合视图自定义布局实现高级定制 495.2.1 石工布局 505.2.2 封面浏览布局 555.3 小结 565.4 扩展阅读 56第6章 使用自动布局 586.1 Xcode 4的自动布局 586.2 了解自动布局 596.3 Xcode 5中自动布局的新特性 596.3.1 在Xcode 5中使用自动布局 616.3.2 固有尺寸 626.3.3 固有尺寸和本地化 636.3.4 设计时和运行时布局 636.3.5 自动更新边框 646.3.6 顶部和底部布局引导 656.3.7 辅助编辑器中的布局预览 656.3.8 在设计时调试自动布局 656.3.9 在自动布局中使用滚动视图 666.3.10 使用自动布局和边框 666.3.11 可视格式化语言 666.3.12 可视格式化语言的缺点 676.3.13 调试布局错误 686.4 小结 696.5 扩展阅读 69第7章 更完善的自定义绘图 717.1 iOS的不同绘图系统 717.2 UIKit和视图绘图周期 727.3 视图绘制与视图布局 737.4 自定义视图绘制 747.4.1 通过UIKit绘图 747.4.2 路径 757.4.3 理解坐标系 777.4.4 重新调整大小以及内容模式 797.4.5 变形 807.4.6 通过Core Graphics进行绘制 827.4.7 混用UIKit与Core Graphics 857.4.8 管理图形上下文 857.5 优化UIView绘制 877.5.1 避免绘图 877.5.2 缓存与后台绘制 887.5.3 自定义绘图与预渲染 887.5.4 像素对齐与模糊文本 897.5.5 透明、不透明与隐藏 907.6 小结 907.7 扩展阅读 91第8章 Core Animation 928.1 视图动画 928.2 管理用户交互 948.3 图层绘制 948.3.1 直接设置内容 968.3.2 实现display方法 978.3.3 自定义绘图 978.3.4 在自己的上下文中绘图 998.4 移动对象 998.4.1 隐式动画 1008.4.2 显式动画 1018.4.3 模型与表示 1018.4.4 关于定时 1038.5 三维动画 1058.6 美化图层 1088.7 用动作实现自动动画 1088.8 为自定义属性添加动画 1108.9 Core Animation与线程 1118.10 小结 1118.11 扩展阅读 111第9章 多任务 1139.1 多任务和运行循环简介 1139.2 以操作为中心的多任务开发 1149.3 用GCD实现多任务 1189.3.1 分派队列简介 1199.3.2 用分派屏障创建同步点 1209.3.3 分派组 1219.4 小结 1219.5 扩展阅读 121第三部分 选择工具第10章 创建(Core)Foundation框架 12410.1 Core Foundation类型 12410.2 命名和内存管理 12510.3 分配器 12610.4 内省 12610.5 字符串和数据 12710.5.1 常量字符串 12710.5.2 创建字符串 12810.5.3 转换为C字符串 12910.5.4 其他字符串操作符 13110.5.5 字符串的支持存储 13110.5.6 CFData 13210.6 容器类型 13210.6.1 CFArray 13310.6.2 CFDictionary 13310.6.3 CFSet和CFBag 13410.6.4 其他容器类型 13410.6.5 回调函数 13410.7 自由桥接 13610.8 小结 13910.9 扩展阅读 139第11章 幕后制作:后台处理 14011.1 后台运行最佳实践:能力越大责任越大 14011.2 iOS 7中后台运行的重要变化 14211.3 用NSURLSession访问网络 14211.3.1 会话配置 14311.3.2 任务 14311.3.3 后台传输 14411.4 周期性拉取和自适应多任务 14611.5 后台唤醒 14611.6 状态恢复系统 14711.6.1 测试状态恢复系统 14711.6.2 选择性加入 14811.6.3 应用启动过程的变化 14911.6.4 状态恢复标识符 14911.6.5 状态编码器与状态解码器 14911.6.6 表视图和集合视图 15311.7 小结 15411.8 扩展阅读 154第12章 使用REST服务 15612.1 REST简介 15712.2 选择数据交换格式 15712.2.1 在iOS中解析XML 15712.2.2 在iOS中解析JSON 15812.2.3 XML与JSON 15912.2.4 模型版本化 16012.3 假想的Web服务 16012.4 重要提醒 16112.5 RESTfulEngine架构(iHotelApp示例代码) 16112.5.1 NSURLConnection与第三方框架 16112.5.2 创建RESTfulEngine 16212.5.3 使用访问令牌对API调用进行认证 16512.5.4 在RESTfulEngine.m中覆盖相关方法以添加自定义认证头部 16512.5.5 取消请求 16612.5.6 请求响应 16612.5.7 对JSON数据进行键值编码 16712.5.8 列表页面的JSON对象与详细页面的JSON对象 16912.5.9 嵌套JSON对象 16912.5.10 少即是多 17112.5.11 错误处理 17112.5.12 本地化 17312.5.13 使用分类处理其他格式 17312.5.14 在iOS中提升性能的小技巧 17412.6 缓存 17412.7 需要离线支持的原因 17412.8 缓存策略 17512.8.1 存储缓存 17512.8.2 缓存版本和失效 17812.9 数据模型缓存 17812.10 缓存版本控制 18212.11 创建内存缓存 18312.11.1 为AppCache设计内存缓存 18412.11.2 处理内存警告 18512.11.3 处理结束和进入后台通知 18612.12 创建URL缓存 18612.12.1 过期模型 18712.12.2 验证模型 18712.12.3 示例 18712.12.4 用URL缓存来缓存图片 18812.13 小结 18812.14 扩展阅读 188第13章 充分利用蓝牙设备 19013.1 蓝牙历史 19013.2 为什么选择低功耗蓝牙 19113.3 蓝牙SDK 19113.3.1 服务器 19113.3.2 客户端 19113.4 类和协议 19113.5 使用蓝牙设备 19213.5.1 通过扫描寻找服务 19213.5.2 连接设备 19413.5.3 直接获取外围设备 19413.5.4 发现服务 19413.5.5 发现特性 19513.6 创建自己的外围设备 19713.6.1 广播服务 19713.6.2 常见场景 20013.7 在后台运行 20013.7.1 后台模式 20013.7.2 电量考虑 20013.7.3 状态保存和恢复 20013.8 小结 20113.9 扩展阅读 201第14章 通过安全服务巩固系统安全 20314.1 理解iOS沙盒 20314.2 保证网络通信的安全 20414.2.1 证书工作原理 20514.2.2 检验证书的有效性 20714.2.3 判断证书的可信度 21014.3 使用文件保护 21114.4 使用钥匙串 21314.5 使用加密 21614.5.1 AES概要 21714.5.2 使用PBKDF2将密码转换成密钥 21714.5.3 AES模式和填充 21914.5.4 初始化向量 22014.5.5 使用HMAC进行认证 22114.5.6 错误的密码 22214.5.7 组合使用加密和压缩 22214.6 小结 22214.7 扩展阅读 222第15章 在多个苹果平台和设备及64位体系结构上运行应用 22415.1 开发多平台应用 22515.1.1 可配置的目标设置:BaseSDK和Deployment Target 22515.1.2 支持多个SDK时的注意事项:框架、类和方法 22515.1.3 检查框架、类和方法的可用性 22715.2 检测设备的功能 22815.2.1 检测设备及判断功能 22815.2.2 检测硬件和传感器 22915.3 应用内发送Email和短信 23315.4 支持新的4英寸设备族系 23315.4.1 Cocoa自动布局 23515.4.2 代码中固化屏幕尺寸 23515.4.3 iPhone 5s和新的64位指令集 23515.5 向iOS 7迁移 23615.5.1 自动布局 23615.5.2 支持iOS 6 23615.5.3 应用图标 23715.5.4 无边界按钮 23715.5.5 着色 23715.5.6 图片更新 23715.6 向64位体系结构迁移 23815.6.1 数据溢出 23815.6.2 序列化数据 23915.6.3 针对64位体系结构的条件编译 23915.7 UIRequiredDeviceCapabilities 23915.8 小结 24015.9 扩展阅读 240第16章 国际化和本地化 24216.1 什么是本地化 24216.2 本地化字符串 24316.3 对未本地化的字符串进行审查 24416.4 格式化数字和日期 24516.5 nib文件和Base Internationalization 24816.6 本地化复杂字符串 24816.7 小结 25016.8 扩展阅读 251第17章 调试 25217.1 LLDB 25217.2 使用LLDB进行调试 25217.2.1 dSYM文件 25317.2.2 符号化 25417.3 断点 25517.4 观察点 25817.5 LLDB控制台 25917.6 NSZombieEnabled标志 26217.7 不同的崩溃类型 26317.7.1 EXC_BAD_ACCESS 26317.7.2 SIGSEGV 26317.7.3 SIGBUS 26417.7.4 SIGTRAP 26417.7.5 EXC_ARITHMETIC 26417.7.6 SIGILL 26417.7.7 SIGABRT 26417.7.8 看门狗超时 26517.7.9 自定义错误信号处理程序 26517.8 断言 26517.9 异常 26717.10 收集崩溃报告 26817.11 第三方崩溃报告服务 26917.12 小结 27017.13 扩展阅读 270第18章 性能调优 27218.1 性能思维模式 27218.1.1 指导方针一:产品是为了取悦用户才存在的 27218.1.2 指导方针二:设备是为了方便用户而存在的 27218.1.3 指导方针三:做到极致 27218.1.4 指导方针四:用户的感知才是实际的 27318.1.5 指导方针五:关注能带来大收益的方面 27318.2 欢迎走入Instruments的世界 27318.3 查找内存问题 27518.4 查找CPU问题 27918.4.1 Accelerate框架 28218.4.2 GLKit 28318.4.3 编译器优化 28318.4.4 链接器优化 28418.5 绘图性能 28418.6 优化磁盘访问和网络访问 28618.7 小结 28618.8 扩展阅读 286第四部分 超越极限第19章 近乎物理效果:UIKit动力学 29019.1 动画类、行为和动力项 29019.2 UIKit“物理” 29119.3 内置行为 29219.3.1 迅速移动 29219.3.2 附着 29219.3.3 推力 29319.3.4 重力 29419.3.5 碰撞 29419.3.6 动力项 29519.4 行为层次结构 29519.5 自定义操作 29519.6 实战:一个“撕开”视图 29619.6.1 拖拽视图 29619.6.2 撕开该视图 29719.6.3 添加额外效果 30019.7 多个动力学动画类 30119.8 与UICollectionView交互 30219.9 小结 30519.10 扩展阅读 305第20章 魔幻的自定义过渡 30620.1 iOS 7中的自定义过渡 30620.2 过渡协调器 30720.3 集合视图和布局过渡 30820.4 使用故事板和自定义联线的自定义视图控制器过渡 30820.5 自定义视图控制器过渡:iOS 7风格 30820.6 使用iOS 7 SDK的交互式自定义过渡 31020.7 小结 31220.8 扩展阅读 313第21章 精妙的文本布局 31421.1 理解富文本 31421.1.1 字符与字形 31421.1.2 理解字体 31621.1.3 段落样式 31621.2 属性化字符串 31721.2.1 用字体描述符选择字体 31821.2.2 设置段落样式 31921.2.3 HTML 31921.2.4 简化属性化字符串的使用 32021.3 动态字体 32121.4 Text Kit 32221.4.1 Text Kit的组件 32321.4.2 多容器布局 32421.4.3 排除路径 32521.4.4 继承文本容器 32621.4.5 继承文本存储 32721.4.6 继承布局管理器 33121.4.7 针对字形的布局 33421.5 Core Text 33721.5.1 用CTFramesetter进行简单的布局 33721.5.2 为非连续路径创建框架 33821.5.3 排版器、文本行、连续文本和字形 34021.6 小结 34021.7 扩展阅读 341第22章 Cocoa的大招:键值编码和观察 34222.1 键值编码 34222.1.1 用KVC赋值 34422.1.2 用键路径遍历属性 34522.1.3 KVC和容器类 34522.1.4 KVC和字典 34722.1.5 KVC和非对象 34722.1.6 用KVC实现高阶消息传递 34722.1.7 容器操作符 34722.2 键值观察 34822.2.1 KVO和容器类 35022.2.2 KVO是如何实现的 35122.3 KVO的权衡 35122.4 小结 35222.5 扩展阅读 353第23章 超越队列:GCD高级功能 35423.1 信号量 35423.2 分派源 35623.3 定时器源 35823.4 单次分派 35823.5 队列关联数据 35923.6 分派数据和分派I/O 36223.7 小结 36723.8 扩展阅读 367第24章 深度解析Objective-C 36824.1 理解类和对象 36824.2 使用方法和属性 37024.3 使用方法签名和调用 37224.4 消息传递如何工作 37824.4.1 动态实现 37824.4.2 快速转发 38024.4.3 普通转发 38324.4.4 转发失败 38424.4.5 各种版本的objc_msgSend 38424.5 方法混写 38524.6 ISA混写 38724.7 方法混写与ISA混写 38824.8 小结 38924.9 扩展阅读 389
评论关闭。