编辑推荐
适读人群 :iPhone、iPad、应用程序开发者 《iOS编程(第4版)》有两个特点:一、涵盖iOS应用开发必备知识:从Objective-C基础知识到新语言特性,从AppKit库到常见的Cocoa设计模式,从Xcode技巧到Instruments,不一而足。第二、指导读者以正确的方法解决问题:Objective-C的习惯约定有哪些(例如命名约定,内存管理约定),创建子类时如何处理初始化方法,Cocoa的常见设计模式有哪些,如何选择数据保存方法……iOS开发包括iPhone开发、iPod touch开发和iPad开发,《iOS编程(第4版)》绝大部分内容可通用,有差异的部分(例如iPad界面)单独予以说明。
内容简介
《iOS编程》荣获Jolt生产力大奖。第4版更新了iOS7和Xcode5的内容。《iOS编程(第4版)》涵盖了开发iOS应用的方方面面。从Objective-C基础知识到新增加的语言特性;从AppKit库到常见的Cocoa设计模式;从Xcode技巧到Instrumen tst等。如果读者刚接触iOS编程,阅读本书前两章可以快速入门。如果读者已经有iOS编程经验,阅读本书可以拾遗补缺。
作者简介
Christian Keur,是Big Nerd Ranch的高级讲师和软件工程师,负责编写Big Nerd Ranch的“iOS新手培训课程”教材。该教材广受好评,是本书的原型。Christian毕业于美国佐治亚理工学院计算机科学系,目前居住在亚特兰大。
Aaron Hillegass,是Big Nerd Ranch的创始人之一,曾就职于NeXT公司和Apple公司,他拥有近20年的Objective-C、Cocoa、iOS开发与教学经验。Aaron与他人合著了《Mac OS X编程》和《Objectibe-C编程》。
Joe Conway,曾参与编写了“iOS新手培训课程”教材。他最近创办了stable/kernel 公司,开发高质量的移动应用。
内页插图
精彩书评
★本书有两个特点:一、涵盖iOS应用开发必备知识:从Objective-C基础知识到新语言特性,从AppKit库到常见的Cocoa设计模式,从Xcode技巧到Instruments,不一而足。第二、指导读者以正确的方法解决问题:Objective-C的习惯约定有哪些(例如命名约定,内存管理约定),创建子类时如何处理初始化方法,Cocoa的常见设计模式有哪些,如何选择数据保存方法……iOS开发包括iPhone开发、iPod touch开发和iPad开发,书中绝大部分内容可通用,有差异的部分(例如iPad界面)单独予以说明。
阅读此书,转身成为iPhone/iPad程序员。
——Dietrich Kappe,Pathfinder Development公司CTO
目录
前言 xiii本书适合哪些读者 xiii第4版有哪些更新 xiii教学理念 xiv如何使用本书 xv本书是如何组织的 xv代码风格 xvii版式说明 xvii开发所需的硬件与软件 xviii第1章 第一个简单的iOS应用 11.1 创建Xcode项目 21.2 模型-视图-控制器 41.3 设计Quiz 51.4 创建视图控制器 61.5 创建界面 81.6 创建关联 141.7 创建模型对象 181.8 大功告成 211.7 在模拟器上运行应用 221.9 安装应用 231.9 应用图标 251.10 启动图片 27
第2章 Objective-C 292.1 对象 292.2 使用对象 302.3 编写命令行工具RandomItems 332.4 创建Objective-C类的子类 382.5 深入学习NSArray与NSMutableArray 582.6 异常与未知选择器 602.7 练习 622.8 初级练习:查找问题 622.9 中级练习:另一个初始化方法 622.10 高级练习:另一个类 632.11 关于深入学习部分 632.12 深入学习:如何为类命名 632.13 深入学习:#import和@import 64
第3章 通过ARC管理内存 653.1 栈 653.2 堆 663.3 指针变量与对象所有权 663.4 强引用与弱引用 703.5 属性 753.6 深入学习:属性合成 813.7 深入学习:Autorelease池与ARC历史 83
第4章 视图与视图层次结构 854.1 视图基础 864.2 视图层次结构 864.3 创建UIView子类 884.4 在drawRect:方法中自定义绘图 944.5 关于开发者文档 1054.6 初级练习:绘制图像 1064.7 深入学习:Core Graphics 1064.8 高级练习:阴影和渐变 108
第5章 视图:重绘与UIScrollView 1115.1 运行循环和重绘视图 1125.2 类扩展 1145.3 使用UIScrollView 115
第6章 视图控制器 1196.1 创建UIViewController子类 1206.2 另一个视图控制器 1236.3 UITabBarController 1306.4 视图控制器的初始化方法 1346.5 添加本地通知 1356.6 加载和显示视图 1366.7 与视图控制器及其视图进行交互 1386.8 初级练习:增加一个标签项 1396.9 中级练习:控制逻辑 1396.10 深入学习:键值编码 1396.11 深入学习:Retina显示屏 140
第7章 委托与文本输入 1437.1 文本框(UITextField) 1437.2 委托 1467.3 协议 1487.4 向屏幕中添加UILabel对象 1507.5 运动效果 1527.6 使用调试器 1537.7 深入学习:main()与UIApplication 1577.8 中级练习:捏合-缩放 157
第8章 UITableView与UITableViewController 1598.1 编写Homepwner应用 1598.2 UITableViewController 1608.3 UITableView数据源 1648.4 UITableViewCell对象 1708.5 代码片段库 1758.6 初级练习:表格段 1788.7 中级练习:固定行 1788.8 高级练习:修改UITableView对象的外观 178
第9章 编辑UITableView 1799.1 编辑模式 1799.2 增加行 1859.3 删除行 1879.4 移动行 1889.5 初级练习:更改“删除”按钮的标题 1909.6 中级练习:禁止移动某个表格行 1909.7 高级练习:彻底禁止移动某个表格行 190
第10章 UINavigationController 19110.1 UINavigationController对象 19210.2 额外的视图控制器 19610.3 UINavigationController的导航功能 20110.4 UINavigationBar 20510.5 初级练习:显示数字键盘 21010.6 中级练习:关闭数字键盘 21010.7 高级练习:压入更多视图控制器 210
第11章 相机 21111.1 通过UIImageView对象显示照片 21211.2 通过UIImagePickerController拍摄照片 21611.3 创建BNRImageStore 22011.4 NSDictionary 22211.5 创建并使用键 22511.6 使用BNRImageStore 22711.7 关闭键盘 22811.8 初级练习:编辑照片 23011.9 中级练习:删除照片 23011.10 高级练习:Camera Overlay 23011.11 深入学习:导航实现文件 23011.12 深入学习:摄像 233
第12章 触摸事件与UIResponder 23512.1 触摸事件 23512.2 创建TouchTracker应用 23712.3 实现BNRDrawView,完成绘图功能 23912.4 处理触摸事件并创建线条对象 24012.5 初级练习:保存与读取 24512.6 中级练习:颜色 24512.7 高级练习:圆圈 24612.8 深入学习:响应对象链 24612.9 深入学习:UIControl 247
第13章 UIGestureRecognizer与UIMenuController 24913.1 UIGestureRecognizer子类 25013.2 用UITapGestureRecognizer对象识别“按下”手势 25013.3 同时添加多种触摸手势 25213.4 UIMenuController 25413.5 UILongPressGestureRecognizer 25613.6 UIPanGestureRecognizer以及同时识别多个手势 25713.7 深入学习:UIMenuController与UIResponderStandardEditActions 26013.8 深入学习:再谈UIGestureRecognizer 26113.9 中级练习:修正错误 26213.10 高级练习:速度与宽度 26213.11 高级练习:颜色 262
第14章 调试工具 26314.1 仪表 26314.2 Instruments 26514.3 静态分析器 27514.4 项目、目标和构建设置 277
第15章 自动布局入门 28315.1 通用化Homepwner 28315.2 自动布局系统 28515.3 在Interface Builder中添加约束 28915.4 调试约束问题 29815.5 初级练习:打造完美界面 30615.6 中级练习:通用化Quiz 30715.7 深入学习:使用_autolayoutTrace方法调试约束问题 30715.8 深入学习:使用多个XIB文件 308
第16章 在代码中使用自动布局 30916.1 视觉化格式语言 31016.2 创建约束 31116.3 添加约束 31216.4 固有内容大小 31516.5 另一种添加方式 31616.6 深入学习:NSAutoresizingMaskLayoutConstraint 318
第17章 自动转屏,UIPopoverController与模态视图控制器 32117.1 自动转屏 32117.2 自动转屏通告机制 32417.3 UIPopoverController 32617.4 更多的模态视图控制器 32917.5 线程安全的单例 33717.6 初级练习:为另一个类添加线程安全的单例 33917.7 高级练习:UIPopoverController对象的外观 33917.8 深入学习:位掩码 33917.9 深入学习:视图控制器之间的关系 340
第18章 保存、读取与应用状态 34518.1 固化 34518.2 应用沙盒 34818.3 NSKeyedArchiver与NSKeyedUnarchiver 35018.4 应用状态与状态切换 35318.5 通过NSData将数据写入文件 35618.6 NSNotificationCenter和内存过低警告 35818.7 模型-视图-控制器-存储设计模式 36118.8 初级练习:PNG 36118.9 深入学习:应用的状态切换 36218.10 深入学习:文件系统的读取和写入 36318.11 深入学习:应用程序包 366
第19章 创建UITableViewCell子类 36919.1 创建BNRItemCell 36919.2 处理图片 37719.3 由UITableViewCell对象转发动作消息 38019.4 捕获变量 38519.5 初级练习:设置颜色 38619.6 高级练习:缩放 38719.7 深入练习:UICollectionView 387
第20章 动态字体 38920.1 使用用户首选字体 39020.2 响应用户首选字体的改变 39220.3 修改自动布局约束 39320.4 确定用户首选字体大小 39520.5 修改BNRItemCell 397
第21章 Web服务与UIWebView 40321.1 Web服务 40421.2 UIWebView 41421.3 认证信息 41625.4 中级练习:加强UIWebView 41821.5 高级练习:课程预告 41821.6 深入学习:HTTP请求主体 419
第22章 UISplitViewController 42122.1 在Nerdfeed中使用UISplitViewController 42222.2 在竖排模式下显示主视图控制器 42522.3 将Nerdfeed改为通用应用 428
第23章 Core Data 43123.1 对象-关系映射 43123.2 用Core Data重写BNRItemStore的数据保存功能 43223.3 再谈SQL 45023.4 Faults 45123.5 各种存取机制的优缺点 45323.6 初级练习:Asset的iPad界面 45423.7 中级练习:增加BNRAssetType对象 45423.8 高级练习:显示某种类型的BNRItem对象 454
第24章 状态恢复 45524.1 状态恢复的工作原理 45524.2 启用状态恢复 45624.3 恢复标识和恢复类 45724.4 状态恢复与应用生命周期 45924.5 恢复视图控制器 46124.6 编码状态数据 46424.7 保存视图状态 46524.8 中级练习:为另一个应用启用状态恢复 46724.9 深入学习:设置快照 467
第25章 本地化 46925.1 通过NSNumberFormatter实施国际化 47025.2 资源的本地化 47325.3 NSLocalizedString()与字符串对照表 47725.4 初级练习:再添加一套本地化资源 48025.5 深入学习:NSBundle在国际化过程中的作用 48025.6 深入学习:不通过基础国际化对XIB文件实施本地化 481
第26章 NSUserDefaults 48326.1 NSUserDefaults 48326.2 设置束 487
第27章 控制动画 49127.1 基础动画 49127.2 关键帧动画 49427.3 在动画完成后执行特定的代码 49627.4 弹簧动画 49727.5 中级练习:提升Quiz的用户体验 498
第28章 UIStoryboard 49928.1 创建Storyboard文件 49928.2 Storyboard文件中的UITableViewController 50328.3 Segue 50628.4 改变颜色 51228.5 传递数据 51328.6 Storyboards的优缺点 52028.7 深入学习:状态恢复 521
第29章 后记 52329.1 接下来做什么 52329.2 结束语 524索引 525
前言/序言
开启你的iOS开发之旅:从零基础到精通 《iOS编程(第4版)》 内容简介: 踏入一个充满无限创造力和可能性的世界——iOS开发。无论你是怀揣创业梦想的独立开发者,渴望为苹果生态系统贡献力量的工程师,还是仅仅对构建精美、直观的移动应用程序充满好奇的技术爱好者,本书都将是你手中不可或缺的指南。 本书并非仅仅是一本技术手册,更是一次精心设计的学习旅程,旨在将你从iOS开发的门外汉,一步步引导成为一名能够独立思考、解决复杂问题的资深开发者。我们深知,对于初学者而言,编程世界可能充满了挑战与未知。因此,本书的设计理念始终围绕着“清晰”、“易懂”和“循序渐进”展开,力求消除每一个潜在的学习障碍,让你在轻松愉快的氛围中掌握核心技能。 核心技术与概念的深入解析: 本书将从最基础的Swift语言开始,为你搭建坚实的编程基础。Swift,作为苹果官方推荐的现代编程语言,以其安全性、速度和表现力而闻名。我们将深入探讨Swift的语法、数据类型、控制流、函数、类、结构体、枚举、协议、泛型等核心概念。你将学习如何编写优雅、高效的代码,理解面向对象编程(OOP)和面向协议编程(POP)的设计思想,并逐步掌握Swift的强大功能,如闭包、可选类型、错误处理以及并发编程。 在掌握了Swift语言的精髓后,本书将带领你进入iOS开发的核心框架——UIKit。你将深入理解iOS应用程序的基本构建块,包括视图(Views)、视图控制器(View Controllers)和用户界面(UI)的交互。我们会详细讲解如何使用Interface Builder(Xcode的可视化设计工具)来创建和布局UI元素,如何通过编程方式动态地修改界面,以及如何处理用户的触摸事件、手势识别等。从创建简单的按钮和标签,到构建复杂的列表、表格和集合视图,你将学会如何打造响应迅速、用户体验卓越的界面。 现代iOS开发的最佳实践: 随着iOS生态的不断发展,新的技术和设计模式层出不穷。本书不仅会教授你传统的方法,更会着重强调现代iOS开发的最佳实践。我们将深入讲解Objective-C到Swift的迁移过程,以及如何利用Swift的特性来编写更简洁、更安全的代码。 内存管理是iOS开发中至关重要的一环。本书将详细阐述ARC(自动引用计数)的工作原理,以及如何避免内存泄漏和循环引用,确保你的应用程序能够稳定运行,高效利用设备资源。 数据持久化是构建复杂应用程序的必备技能。我们将介绍多种数据存储方案,包括UserDefaults(用于存储少量简单数据)、文件系统(用于存储文件)、Core Data(Apple提供的强大的对象图管理和持久化框架),以及Realm(一种流行的移动数据库)等。你将学会如何选择最适合你项目需求的数据存储方式,并掌握相关API的使用。 网络通信是现代移动应用程序不可或缺的一部分。本书将引导你了解如何使用URLSession等框架来发起HTTP请求,如何处理JSON等数据格式,以及如何实现数据与服务器之间的同步。你将学会构建能够与后端服务进行交互的应用程序,实现数据的动态加载和更新。 进阶主题与项目实践: 本书不仅仅停留在基础知识的讲解,更会深入探讨一些进阶的主题,帮助你构建更复杂、更健壮的应用程序。 多线程与并发编程: 随着应用程序功能的日益丰富,处理耗时操作和保持UI的流畅性变得至关重要。我们将介绍GCD(Grand Central Dispatch)和Operation Queues等并发编程技术,让你能够有效地利用多核处理器,提升应用程序的性能。 设计模式: 学习和应用经典的设计模式,如MVC(Model-View-Controller)、MVVM(Model-View-ViewModel)、单例模式、观察者模式等,可以帮助你编写更易于维护、扩展和测试的代码。本书将通过实际案例讲解这些模式的应用。 版本控制(Git): 版本控制是团队协作和项目管理的基础。我们将介绍Git的基本概念和常用命令,帮助你有效地管理代码的版本,进行分支管理和合并。 测试(Unit Testing & UI Testing): 编写高质量的测试代码是保证应用程序稳定性的关键。本书将介绍单元测试和UI测试的基本方法,帮助你编写可测试的代码,并确保你的应用程序在各种场景下都能正常运行。 SwiftUI: 作为Apple推出的声明式UI框架,SwiftUI正在逐步取代UIKit成为构建Apple平台UI的主流方式。本书将为你介绍SwiftUI的核心概念,包括State、Binding、ViewModifier等,让你能够快速上手,构建现代化的响应式UI。 从构思到发布:完整的开发流程指导: 本书将带领你完成一个完整的应用程序开发周期,从最初的项目构思、UI设计,到编码实现、功能测试,再到最终的打包和发布到App Store。你将学习如何利用Xcode这一强大的集成开发环境(IDE),掌握调试技巧,优化应用程序性能,并了解App Store的审核流程和发布要求。 目标读者: 初学者: 对iOS开发充满兴趣,但缺乏相关经验的编程新手。 其他平台开发者: 具备其他编程语言经验,希望迁移到iOS开发领域的开发者。 在校学生: 希望学习移动应用开发技能,为未来职业发展打下基础的学生。 有志于App创业者: 希望将自己的创意转化为实际的iOS应用程序的个人或团队。 希望提升iOS技能的现有开发者: 寻求系统性学习和深化理解iOS开发核心概念和最新技术的开发者。 为何选择《iOS编程(第4版)》? 在浩如烟海的学习资料中,选择一本适合自己的书至关重要。《iOS编程(第4版)》之所以脱颖而出,是因为它: 全面性: 覆盖了从Swift语言基础到高级主题,以及UIKit和SwiftUI等核心框架的全面内容。 实战性: 强调动手实践,通过丰富的代码示例和项目贯穿始终,让你在学习中获得成就感。 前沿性: 紧跟iOS技术发展的步伐,介绍最新的Swift语言特性和Apple平台API。 易学性: 采用清晰的语言和逻辑结构,将复杂的概念分解成易于理解的部分。 权威性: 基于Apple官方推荐的技术栈,确保知识的准确性和实用性。 准备好迎接挑战,创造属于你的iOS应用程序了吗? 翻开《iOS编程(第4版)》,让你的编程梦想在指尖绽放,用代码连接世界!