智捷iOS课堂-关东升老师最新作品:《iOS开发指南-从0基础到AppStore上线》正式出版了
iOS架构设计、iOS性能优化、iOS测试驱动、iOS调试、iOS团队协作版本控制。。。。。。应有尽有
京东销售地址:
当当销售地址:
亚马逊销售:
图灵社区在线阅读,购买地址:
源码和章节和大家分享一下!
《iOS开发指南-从0基础到AppStore上线》书籍源码下载地址(免费下载):
源码比较大,打了3个包。
试读章节下载地址
iOS入门开发,iOS进阶开发相关教学视频,请观看,51CTO视频课程
可以通过微博在线沟通
读书交流群:286411514/204462948
本书最新动态可以关注我的微博@tony_关东升 或者@智捷iOS课堂
新浪微博:
本书网站:,有部分内容和勘误问题讨论区等
目录大纲
基础篇1 开篇综述
1.1iOS概述
1.1.1iOS是什么?1.1.2iOS6新特性1.2 开发环境及开发工具1.3 本书中的约定1.3.1 案例代码约定1.3.2 图示的约定2 第一个iOS应用程序
2.1 创建基于nib的HelloWorld工程
2.1.1 创建工程2.1.2Xcode中的iOS工程模板2.1.3 应用剖析2.2 基于故事板的HelloWorld工程2.2.1 使用故事板重构HelloWorld2.2.2nib、xib与故事板2.2.3 故事板中的Scene和Segue2.3 应用生命周期2.3.1 非运行状态——应用启动场景2.3.2 点击Home键——应用退出场景2.3.3 挂起重新运行场景2.3.4 内存清除——应用终止场景2.4 视图生命周期2.4.1 视图生命周期与视图控制器关系2.4.2 iOS6 UI状态保持和恢复2.5 设置产品属性2.5.1Xcode中Project和Target2.5.2 设置常用的产品属性2.6iOS API的介绍2.6.1API概述2.6.2 如何使用API帮助3 iOS常用设计模式
3.1 单例模式
3.1.1 问题提出3.1.2 实现原理3.1.3 应用案例3.2 委托模式3.2.1 问题提出3.2.2 实现原理3.2.3 应用案例3.3 观察者模式3.3.1 问题提出3.3.2 实现原理3.3.3 通知机制3.3.4KVO机制3.4MVC模式3.4.1MVC模式概述3.4.2Cocoa Touch中的MVC模式4 UIView与控件
4.1 视图“始祖”——UIView
4.1.1UIView“家族”4.1.2 应用画面的构建层次4.1.3 视图分类4.2 标签控件和按钮控件4.2.1 标签控件4.2.2 按钮控件4.2.3 动作和输出口4.3TextField控件和TextView控件4.3.1TextField控件4.3.2TextView控件4.3.3 键盘的打开和关闭4.3.4 关闭和打开键盘的通知4.3.5 键盘的种类4.4 开关控件、滑块控件和分段控件4.4.1 开关控件4.4.2 滑块控件4.4.3 分段控件4.5 网页控件WebView4.5.1WebView介绍4.5.2 使用WebView构建Hybrid应用4.5.3 本地代码调用JavaScript4.5.4JavaScript调用本地代码4.6 屏幕滚动控件ScrollView4.6.1ScrollView属性的设置4.6.2 键盘与其它控件的协同4.7 等待相关的控件与进度条4.7.1 等待控件ActivityIndicatorView4.7.2 进度条ProgressView4.7 警告和动作选单4.7.1 警告框AlertView4.7.2 动作选单ActionSheet4.8 工具栏和导航栏4.8.1 工具栏4.8.2 导航栏4.9 屏幕布局4.9.1iPad与iPhone屏幕布局4.9.2 绝对布局和相对布局4.9.3 使用iOS6 AutoLayout布局4.9.4 旋转你的屏幕4.10 拨选器4.10.1 日期拨选器4.10.2 普通拨选器4.10.3 数据源协议与委托协议4.11iOS6中的Collection视图4.11.1Collection视图介绍4.11.2Collection视图单元格4.11.3 数据源协议与委托协议5 表视图
5.1 概述
5.1.1 表视图的组成5.1.2 表视图相关类的构成5.1.3 表视图分类5.1.4 单元格组成和样式5.1.5 数据源协议与委托协议5.2 简单表视图5.2.1 创建简单表视图5.2.2 自定义单元格5.2.3 添加搜索栏5.3 分节表视图5.3.1 添加索引5.3.2 分组与静态表5.4 修改单元格5.4.1 删除和插入5.4.2 移动5.5 表视图UI设计模式5.5.1 分页模式5.5.2 下拉刷新模式5.5.3iOS6下来刷新控件6 视图控制器与导航模式
6.1 概述
6.1.1 视图控制器种类6.1.2 导航模式6.1.3 模态视图6.2 平铺页面导航6.2.1 应用场景6.2.2 基于分屏控件的导航实现6.2.3 基于Page的导航实现6.3 标签导航6.3.1 应用场景6.3.2nib实现6.3.3 故事板实现6.4 树形结构导航6.4.1 应用场景6.4.2nib实现6.4.3 故事板实现6.5 组合使用导航模式6.5.1 应用场景6.5.2 故事板实现7 iPhone与iPad应用开发的差异
7.1 概述
7.1.1 应用场景差异7.1.2 设计和开发需注意的问题7.1.3 构建自适应iPhone和iPad工程7.2iPad专用API7.2.1UIPopoverController控制器7.2.2UISplitViewController控制器7.2.3 模态视图专用属性7.3Master-Detail应用程序模板7.3.1nib实现模板7.3.2 故事板实现模板7.4Utility应用程序模板7.4.1nib实现模板7.4.2 故事板实现模板7.5 移动平台的分层架构设计7.5.1 低耦合企业级系统架构设计7.5.2 移动平台的分层架构设计7.5.3 基于同一工程的分层7.5.4 基于一个工作空间不同工程的分层8 应用程序的设置
8.1 概述
8.1.1 设置8.1.2 配置8.2 应用程序设置包8.3 设置项目种类8.3.1 文本字段8.3.2 开关8.3.3 滑块8.3.4 值列表8.3.5 子画面8.4 读取设置9 应用程序本地化
9.1 概述
9.1.1 本地化内容9.1.2 本地化目录结构9.2 文本信息本地化9.2.1 系统按钮和信息本地化9.2.2 应用名称本地化9.2.3 程序代码输出的静态文本本地化9.2.4 使用genstring工具9.3nib和故事板文件本地化9.3.1 添加本地化9.3.2 开关使用ibtool工具9.4 资源文件本地化10 数据持久化
10.1 概述
10.1.1 沙箱目录10.1.2 持久化方式10.2 属性列表10.3 对象归档10.4 使用SQLite数据库10.4.1SQLite数据类型10.4.2 创建数据库10.4.3 查询数据10.4.4 修改数据10.5Core Data10.5.1ORM(对象关系映射)10.5.2CoreData堆栈10.5.3 建模和生成实体10.5.4 采用Core Data分层架构设计10.5.5 查询数据10.5.6 修改数据11 访问通讯录
11.1 概述
11.2 读取联系人信息11.2.1 查询联系人记录11.2.2 读取单值属性11.2.3 读取多值属性11.2.4 读取图片属性11.3 写入联系人信息11.3.1 创建联系人11.3.2 修改联系人11.3.3 删除联系人11.4AddressBook高级API11.4.1 选择联系人11.4.2 显示和修改联系人11.4.3 创建联系人网络篇
12 访问Web Service
12.1 概述
12.2 数据交换格式12.2.1XML文档结构12.2.2 解析XML文档12.2.3JSON文档结构12.2.4JSON数据解码12.3REST Web Service12.3.1HTTP和HTTPS协议12.3.2 同步GET方法请求编程12.3.3 异步GET方法请求编程12.3.4POST方法请求编程12.3.5 调用REST Web Service的插入、修改和删除方法12.4ASIHTTPRequest框架使用12.4.1 安装和配置ASIHTTPRequest框架12.4.2 同步请求12.4.3 异步请求12.4.4 使用请求队列12.4.5 上传数据12.5 反馈网络信息改善用户体验12.5.1iOS6表视图刷新控件的使用12.5.2 使用等待指示器控件12.5.3 使用网络等待指示器13 定位服务与地图应用开发
13.1 定位服务
13.1.1 定位服务编程13.1.2 地理信息反编码13.1.3 地理信息编码查询13.1.4 关于定位服务的测试13.2 使用iOS6苹果地图13.2.1 显示地图13.2.2 添加标注13.2.3 跟踪用户位置变化13.3 使用程序外地图13.3.1 调用iOS6苹果地图13.3.2 调用谷歌Web地图进阶篇
14 iOS中的商业模式
14.1 收费策略
14.1.1iOS如何赚钱14.1.2 避免定价策略误区14.1.3 免费软件的艺术14.1.4 适当的时间适当的地点植入你的广告14.1.5 尝试不同的盈利模式14.2 使用苹果iAd广告14.2.1 横幅广告14.2.2 插页广告14.2.3 查看你的收入14.3 使用谷歌AdMob广告14.3.1 注册AdMob帐号和管理应用14.3.2 下载谷歌AdMob Ads SDK和示例代码14.3.3 添加AdMob横幅广告14.3.4 添加AdMob插页广告14.3.5 为广告提交用户和位置信息14.3.6 搜索广告14.3.7 查看你的收入14.4 应用内购买14.4.1 概述14.4.2 测试环境搭建14.4.3 在程序中添加实现应用内购买14.4.4 测试应用内购买15 找出你程序中的BUG-调试
15.1Xcode调试工具
15.1.1 定位编译错误15.1.2 查看和显示日志15.1.3 设置和查看断点15.1.4 调试工具栏15.1.5 输出窗口15.1.6 变量查看窗口15.1.7 查看线程15.2 日志与断言输出15.2.1 使用NSLog函数15.2.2 使用NSAssert宏15.2.3 移除NSLog和NSAssert15.3LLDB调试工具15.3.1 断点命令15.3.2 观察点命令15.3.3 查看变量和计算表达式命令15.4 异常堆栈报告分析15.4.1 跟踪异常堆栈15.4.2 分析堆栈报告15.5iOS设备上调试15.5.1 创建开发者证书15.5.2 设备注册15.5.3 创建App ID15.5.4 创建配置概要文件15.5.5 设备调试15.6Xcode设备管理工具15.6.1 管理设备配置概要文件15.6.2 查看设备上应用程序15.6.3 设备控制台15.6.4 设备日志16 基于测试驱动的iOS开发
16.1 测试驱动的软件开发概述
16.1.1 测试驱动的软件开发流程16.1.2 测试驱动的软件开发案例16.2 使用OCUnit测试框架16.2.1iOS单元测试框架16.2.2 添加OCUnit到工程16.2.3 应用测试和逻辑测试16.2.4 编写OCUnit测试方法16.2.5 分析测试报告16.3 使用GHUnit测试框架16.3.1 添加GHUnit到工程16.3.2 编写GHUnit测试用例16.3.3 分析测试报告16.4 使用伪对象16.4.1 添加OCMock到工程16.4.2 使用OCMock16.5iOS单元测试最佳实践16.5.1iOS单元测试策略16.5.2 测试数据持久层16.5.3 测试业务逻辑层16.5.4 测试表示层17 让你的程序“飞”起来——性能优化
17.1 内存优化
17.1.1 内存泄漏问题的解决17.1.2 查找和解决僵尸对象17.1.3autorelease的使用问题17.1.4 响应内存警告17.1.5 选择nib还是故事板?17.2 优化资源文件17.2.1 图片文件优化17.2.2 音频文件优化17.3 延迟加载17.3.1 资源文件的延迟加载17.3.2 故事板和nib文件的延迟加载17.4 数据持久化的优化17.4.1 使用文件17.4.2 使用SQLite数据库17.4.3 使用CoreData17.5 可重用对象的使用17.5.1 表视图中的重用对象17.5.2Collection视图中的重用对象17.5.3 地图视图中的重用对象17.6 并发处理与多核CPU17.6.1 主线程阻塞问题17.6.2 选择NSThread还是GCD?17.7 编译器和编译参数17.7.1GCC、LLVM GCC与Apple LLVM比较17.7.2ARM架构17.7.3Optimization Level18 管理好你的程序代码——代码版本控制
18.1 概述
18.1.1 版本控制历史18.1.2 基本概念18.2Git代码版本控制18.2.1 服务器搭建18.2.2Gitolite服务器管理18.2.3Git常用命令18.2.3Git分支18.2.4Git协同开发18.2.5Xcode中Git的配置与使用18.3GitHub代码托管服务18.3.1 创建和配置GitHub账号18.3.2 创建代码库18.3.3 派生(fork)代码库18.3.4 使用GitHub协同开发18.3.5 管理组织19 把你的应用放到App Store
19.1 收官
19.1.1 添加图标19.1.2 添加启动画面19.1.3 调整应用Target属性19.1.4 为发布编译19.1.5 应用打包19.2 发布流程19.2.1创建应用及基本信息19.2.2应用定价信息19.2.3最后信息输入19.2.4上传应用19.3常见审核不通过的原因19.3.1 功能问题19.3.2 用户界面问题19.3.3 商业问题19.3.4 不当内容19.3.5 其它问题实战篇
20 重构MyNotes应用——iOS网络通信中的设计模式与架构设计
20.1 移动网络通讯应用的分层架构设计
20.2 基于委托模式实现20.2.1 网络通讯与委托模式20.2.2 异步网络通讯中委托模式实现分层架构设计20.2.3 类图20.2.4 时序图20.2.5 数据持久层代码实现20.2.6 业务逻辑层代码实现20.2.7 表示层代码实现20.3 基于观察者模式通知机制实现20.3.1 观察者模式的通知机制回顾20.3.2 异步网络通讯中通知机制实现分层架构设计20.3.3 类图20.3.4 时序图20.3.5 数据持久层代码实现20.3.6 业务逻辑层代码实现20.3.7 表示层代码实现21 iOS敏捷开发项目实战——2016里约热内卢奥运会应用开发及App Store发布
21.1 应用分析与设计
21.1.1 应用概述21.1.2 需求分析21.1.3 原型设计21.1.4 数据库设计21.1.5 架构设计21.2iOS敏捷开发21.2.1 敏捷开发宣言21.2.2iOS可以敏捷开发?21.2.3iOS敏捷开发最佳实践21.3 任务1:创建应用基本工作空间21.3.1 迭代1.1 创建数据持久层工程21.3.2 迭代1.2 创建业务逻辑层工程21.3.3 迭代1.3 创建表示层工程21.3.4 迭代1.4 提交代码到GitHub21.4 任务2:信息系统层与持久层开发21.4.1 迭代2.1 编写数据库DDL脚本21.4.2 迭代2.2 插入初始数据到数据库21.4.3 迭代2.3 编写实体类21.4.4 迭代2.4 DAO类GHUnit单元测试21.4.5 迭代2.5 编写DAO类21.4.6 迭代2.6 提交代码到GitHub21.5 任务3:业务逻辑层开发21.5.1 迭代3.1 比赛项目业务逻辑类GHUnit单元测试21.5.2 迭代3.2 编写比赛项目业务逻辑类21.5.3 迭代3.3 比赛日程业务逻辑类GHUnit单元测试21.5.4 迭代3.4 编写比赛日程业务逻辑类21.5.5 迭代3.5 提交代码到GitHub21.6 任务4:表示层开发21.6.1 迭代4.1 根据原型设计初步设计iPad故事板21.6.2 迭代4.2 根据原型设计初步设计iPhone故事板21.6.3 迭代4.3 首页模块21.6.4 迭代4.4 比赛项目模块21.6.5 迭代4.5 比赛日程模块21.6.6 迭代4.6 倒计时模块表示层21.6.7 迭代4.7 关于我们模块表示层21.6.8 迭代4.8 提交代码到GitHub21.7 任务5:收工21.7.1 迭代5.1 添加图标21.7.2 迭代5.2 设计和添加启动画面21.7.3 迭代5.3 植入谷歌AdMob横幅广告21.7.4 迭代5.4 设备上测试21.7.5 迭代5.5 提交代码到GitHub21.7.6 迭代5.6 App Store应用发布