内容简介
《iOS编程(第三版)》全面细致地讲解Cocoa Touch的基础知识,深入解读并剖析在开发iPhone及iPad应用时可能遇到的各种问题,并揭示如何高效地使用Objective-C和Xcode顺利完成iPhone及iPad应用开发之旅。主要内容有:学习Objective-C语言的细节以及面向对象程序设计理念。理解Xcode工程的结构和生命周期的各个阶段。了解Cocoa的关键概念,例如,类之间的联系、接收事件以及模型-视图-控制器架构。学会管理、绘制、组合视图和层,并创建动画。熟悉视图控制器以及它们之间的联系,管理nib和串联图。深入剖析所有的基本界面对象,例如,滚动视图、表格视图和控件。探索Cocoa框架中的声音、视频、传感器和地图等功能。使用线程和网络等高级功能。
作者简介
Matt Neubury博士,自1968年以来就是一名软件开发工程师,精通OSX和iOS上的应用开发。他既是《Mac Tech》杂志的编辑,也是TidBITS的长期特约编辑。在O‘Reilly出版了的图书有《Frontier:The Definitive Guide》、《REALbasic:The DefinitiveGuide》,以及《Apple Script: The Definitive Guide》等。
内页插图
目录
前言
第一部分 语言
第1章 C语言的必备知识
第2章 面向对象的编程
第3章 Objective—C语言对象与消息
第4章 Objective—C类
第5章 Objective—C实例
第二部分 集成开发环境
第6章 Xcode工程的解析
第7章 nib管理
第8章 文档
第9章 项目的生命周期
第三部分 Cocoa
第10章 Cocoa类
第11章 Cocoa事件
第12章 访问器和内存管理
第13章 数据通信
第四部分 视图
第14章 视图
第15章 绘图
第16章 图层
第17章 动画
第18章 触摸
第五部分 界面
第19章 视图控制器
第20章 滚动视图
第21章 表格视图和集合视图
第22章 弹出框和分割视图
第23章 文本
第24章 Web视图
第25章 控件和其他视图
第26章 模态对话框
第六部分 框架
第27章 音频
第28章 视频
第29章 音乐库
第30章 图片库和拍摄图像
第31章 地址簿
第32章 日历
第33章 邮件和消息
第34章 地图
第35章 传感器
第七部分 其他主题
第36章 持久性存储
第37章 网络基础
第38章 线程
第39章 撤销
第40章 结束语
精彩书摘
一般情况下,你必须警惕具有独特内存管理行为的Cocoa对象,这种行为通常会在文档中明确说明。例如,UIWebView的文档警告说:“在释放一个已设置了委托的UIWebView实例前,你必须首先设置其委托属性为nil。”而一个CAAnimation对象会保留其委托,这是个例外,如果你没有意识到这点,则可能会导致出错。
也有一些Apple文档没有给出考虑特殊内存管理的任何警告,但ARC本身由于在block中使用了self会警告可能存在保留环。再一次提醒,weak—strong dance可能是你最好的防御。一个执行UIPageViewController的实例方法setViewControllers:direction:animated:completion:的结束处理函数示例,编译器将发出警告,“Capturing‘self’ strongly in thisblock is likely to lead to a retain cycle” (侦测到此block中‘self’的强引用,可能导致保留环)。由于使用了weak—strong dance,你反而获得了self的弱引用。
nib加载和内存管理
在iOS中,当nib加载时,系统实例化后的顶级nib对象将被自动释放。所以如果有人没有保留它们,它们将很快像一团烟雾般消失。为防止这种情况的发生,有两种主要的策略:
保留与outlet图
形成一个内存管理图:每个顶级对象由另一个顶级对象保留(当然,不会形成保留环),File’s Owner作为内存管理图的开始。因此,File’s Owner代理有一个到顶层对象的outlet;当nib加载和该顶级对象被分配给实际nib所有者实例相应的实例变量(第7章)时,它就被保留下来。如果你安排的保留链正确,需要被保留的所有对象将都会被保留(图12—1)。这就是加载nib时你通常会使用的策略。
……
前言/序言
《iOS编程(第三版)[Programming iOS 6]》是一本面向希望掌握iOS设备应用程序开发的开发者的实用指南。本书的宗旨是为读者提供坚实的基础,使其能够自信地构建功能丰富、用户体验出色的iOS应用。本书深入探讨了Objective-C编程语言的核心概念,并将其与iOS SDK紧密结合,使读者能够理解并运用Cocoa Touch框架的力量。 本书首先从Objective-C的基础知识入手,讲解了其语法、对象模型、消息传递机制、分类、协议以及内存管理等关键概念。这些是构建任何iOS应用都不可或缺的基石。读者将学习如何定义类、创建对象、实现继承和多态,以及如何有效地管理内存,避免常见的内存泄漏问题。Objective-C的动态特性将得到充分的阐释,帮助读者理解其在iOS开发中的重要性。 在掌握了Objective-C的精髓之后,本书将带领读者进入iOS SDK的世界。读者将深入了解Cocoa Touch框架,包括其主要的组件和架构。UIKit框架作为构建用户界面的核心,将得到详尽的讲解。本书将详细介绍`UIView`、`UIViewController`、`UINavigationController`、`UITabBarController`等核心UI元素的用法,以及如何使用Interface Builder进行界面布局和设计。读者将学习如何创建各种控件,如按钮、文本框、列表、图像视图,并了解如何响应用户交互,实现流畅的用户体验。 多层视图控制器管理(Multiple View Controller Management)是iOS应用导航的关键。本书将详细阐述`UINavigationController`的栈式导航模型,以及如何通过推入和弹出视图控制器来实现层级化的导航。对于更复杂的导航模式,例如标签栏导航,本书将深入讲解`UITabBarController`的用法,使读者能够设计和实现直观的多选项卡界面。 数据持久化是几乎所有应用程序都会面临的重要问题。本书将全面介绍iOS中各种数据持久化方案,包括UserDefaults、文件系统存储、Core Data以及Realm数据库。读者将学习如何选择最适合自己应用场景的数据存储方式,并掌握如何在应用中实现数据的读取、写入、更新和删除操作。Core Data作为Apple官方提供的高级数据管理框架,将得到重点讲解,包括其对象图管理、谓词查询、关联对象以及版本迁移等高级特性。 网络通信是现代iOS应用不可或缺的一部分。本书将深入讲解如何使用`NSURLConnection`(或更现代的`URLSession`)进行HTTP网络请求,包括GET、POST等常用请求方法。读者将学习如何处理服务器响应,解析JSON或XML数据,以及如何处理网络错误和超时。此外,书中还会探讨一些与网络相关的安全问题,例如HTTPS的使用。 多线程和并发是提升iOS应用性能和响应能力的关键。本书将详细讲解GCD(Grand Central Dispatch)的使用,包括串行队列、并发队列、主队列以及异步和同步操作。读者将学习如何将耗时的操作放到后台线程执行,避免阻塞主线程,从而保持UI的流畅和响应。还会涉及Operation Queues,提供更细粒度的线程控制。 此外,本书还将触及iOS开发的许多其他重要方面,包括: 用户界面设计原则: 强调遵循Apple的设计指南,创建符合iOS生态系统风格的应用。 触摸事件处理: 学习如何响应用户的触摸手势,实现平滑的交互。 数据绑定和MVC模式: 深入理解MVC(Model-View-Controller)设计模式,以及如何在iOS应用中有效地应用它。 高级UI控件: 介绍如`UITableView`和`UICollectionView`等用于展示大量数据的强大控件,以及如何高效地管理和渲染它们。 推送通知: 讲解如何集成Apple的推送通知服务,向用户发送实时消息。 定位服务: 学习如何获取设备的地理位置信息,并将其应用于应用中。 多媒体处理: 简要介绍如何集成AVFoundation框架,处理音频和视频。 单元测试和调试: 提供关于如何编写有效的单元测试以及如何使用Xcode的调试工具来查找和修复bug的建议。 本书以实践为导向,通过大量的代码示例和逐步讲解,帮助读者将理论知识转化为实际的开发技能。读者将从零开始,逐步构建出各种不同类型的iOS应用,涵盖从简单的工具应用到更复杂的数据驱动型应用。本书的目标是让读者在完成阅读后,能够独立地构思、设计、开发和发布自己的iOS应用,并具备持续学习和适应iOS平台未来发展变化的能力。 《iOS编程(第三版)[Programming iOS 6]》并非一本只关注表面特性的速成指南,而是致力于为读者打下坚实的理论基础和实操能力。通过深入理解Objective-C和iOS SDK的底层机制,读者将能够更有效地解决开发过程中遇到的各种挑战,并创造出真正优秀的用户体验。这本书是所有渴望在iOS开发领域取得成功的初学者和进阶开发者的必备参考。
我是一名业余的iOS爱好者,平时工作之余会捣鼓一些小应用,但总感觉自己的知识体系不够系统。《iOS编程(第三版)[Programming iOS 6]》这本书,是我在朋友的推荐下入手的。虽然我并非专业开发者,但我希望这本书能够提供一种相对易于理解的方式来学习iOS开发。我特别看重书中是否能够清晰地解释一些核心的UI控件的使用方法,以及如何将它们组合起来构建一个完整界面。另外,我对于如何处理用户输入、如何导航于不同的屏幕之间,以及如何保存一些简单的用户偏好设置等方面的内容非常感兴趣。我希望这本书不会过于技术化,能够用相对通俗易懂的语言来解释概念,并且提供一些能够立刻上手实践的小例子。如果书中能够提及一些关于App Store的发布流程,或者一些基本的应用发布注意事项,那就更好了。