编辑推荐
运用Objective-C学习Cocoa,有助于提高掌握Cocoa和Objective-C以及开始在iOS和OSX平台上进行应用开发的速度。如果你不熟悉苹果公司的开发工具,这没有关系!那就从面向对象的编程开始,直到学会将应用数据存入iCloud为止。《Cocoa学习手册(第四版)》涵盖了创建iPhone、iPad和Mac所需的各种知识。
内容简介
通过《Cocoa学习手册(第四版)》,你将学会如何使用XcodeIDE、Objective-C的基础库,以及事件工具库和核心动画制作之类的其他开发工具。循序渐进,你将从构建实例项目开始,创建简单的Objective-C的应用、客户视图、简单的视频播放器,以及为用户显示日历事件的应用。
学习OSX和iOS应用软件的生命周期。
使用Cocoa和CocoaTouch的用户界面系统。
使用AVFundation播放视频和音频。
构建供用户利用文档来创建、编辑和使用的应用程序。
使用文件系统进行本地数据存储,或使用iCloud在网络上存储数据。
使用表视图和集合视图显示数据列表或集合。
使用CoreLocation和CoreMotion进行内外通信。
使用块和操作查询来进行多重处理。
作者简介
ParisButtfield-Addison,是Secret实验室的合伙创始人,作为一名无线通信设计师和工程师,他还从事游戏设计和个人信息管理研究。
JonManning,是一名iOS开发的培训员、游戏设计者和研究者,还是移动软件工程师。他也是Secret实验室的合伙创始人。
TimNugent,是一名移动应用程序的开发员和游戏设计师,也是一名博士生兼作家。你可以用@The_McJones在Twitter上与他进行联系。
精彩书评
“如果你对iOS或OSX开发感兴趣的话,这是一本理想的入门教程。Jon和Paris将他们在Cocoa开发中积累的各种知识转化成了这本浅显易懂的经验之书。”
——ElaineWherry,
Meebo合伙创始人和CXO
目录
前言.1
第1章Cocoa开发工具.9
Mac和iOS开发程序9
在Xcode漫游11
开发一个简单的Objective-C应用程序.21
使用iOS模拟器25
第2章使用Objective-C的面向对象编程.27
面向对象编程27
内存管理38
NSObject的生命周期40
第3章Foundation42
可变和不可变对象.42
数组48
字典52
NSValue和NSNumber53
Cocoa中的设计模式.58
第4章OSX和iOS应用程序.61
什么是应用程序.61
应用程序的生命周期66
应用程序沙盒72
第5章图形用户界面76
OSX和iOS中的界面76
MVC和应用程序设计77
Nib文件77
构造一个界面83
使用nib和约束构建一个应用85
UIDynamics.87
为iOS设计界面90
第6章块和操作队列95
块95
操作队列的并发性101
小结103
第7章在视图中绘制图形107
绘图原理.107
像素网格.109
在视图中绘图111
构建自定义视图113
第8章音频和视频.133
AVFoundation133
用AVPlayer播放视频.134
用AVAudioPlayer播放声音141
使用照片库.143
第9章模型对象和数据存储150
Key-ValueCoding151
Key-ValueObserving.152
用NSNotification通知154
用沙箱工作.163
第10章Cocoa绑定166
绑定视图到模型166
一个单独的绑定App167
绑定控制器.169
数组和对象控制器171
一个更复杂的绑定程序172
第11章表格视图和集合视图.178
数据源和委托178
表格视图.179
iOS下的UITableView.179
OSX上的NSTableView187
集合视图.192
第12章基于文档的应用程序196
NSDocument和UIDocument类.197
MVC下的文档对象197
文档种类.197
文档规则.198
OSX下基于文档的应用程序.198
iOS下基于文档的应用程序206
第13章网络214
连接214
建立一个网络版的应用程序218
Bonjour服务发现220
MultipeerConnectivity.222
第14章现实世界的工作.226
使用Location.226
地理编码.233
区域监测和iBeacons235
位置与隐私.237
地图237
设备运动.240
打印文档.245
游戏控制器.248
AppNap250
第15章事件工具包252
理解事件.252
使用事件.255
建立事件应用256
用户隐私权.261
第16章工具和调试器262
启动仪器.262
用仪器修复问题268
保持循环和泄漏272
使用调试器.275
第17章共享与通知281
共享281
通知287
第18章非标准应用295
命令行工具295
偏好设置面板297
状态项.300
多窗口的iOS应用302
第19章使用文本305
国际化和本地化.305
用NSFormatter格式化数据308
用NSDataDetector检测数据.310
文本工具箱313
第20章iCloud315
iCloud存储什么315
iCloud设置316
测试iCloud的工作情况318
存储设置.318
iCloud存储323
前言/序言
在Mac首次支持Cocoa框架时,我们就开始研究它了。从那时起,我们看到了Cocoa和Objective-C从一个小型程序员环境逐步发展为世界上最重要及最有影响力的开发环境之一(实际上,在最近几年,Objective-C成为了TIOBE索引中最受欢迎程序语言之一)。
这些年,我们开发了许多大型而复杂的iOS和OSX软件,并以这种方式将它带到成千上万人面前。我们已经对这个工具集,架构和程序语言有了一个深刻的理解,那就是为iOS和OSX提供最好的软件才是最重要的。苹果时常做出改变,就像最近关于瘦身的iPad和强大的iPhone展示的那样,然而关于使用开发工具、框架,以及语言来实现你的想法的必要知识不会改变。这《Cocoa学习手册(第四版)》将会教你这些知识,带给你自信,使你庆幸能够使用Cocoa、CocoaTouch以及Objective-C进行iOS和OSX开发。
读者对象
需要有一定开发能力,但不需要开发过iOS或者OSX,或者使用过Objective-C。同时,作为用户对OSX有过非常舒适的体验,并且了解如何使用一个iOS设备。
《Cocoa学习手册(第四版)》组织结构
在《Cocoa学习手册(第四版)》中,我们将讨论Cocoa和CocoaTouch和OSX,以及在OSX和iOS上分别使用的框架。沿着这个线路,我们也将讨论Objective-C,包含它的语法和特性。每章会包含相当多实用的例子,可以跟着做。前面的章节包含通用的话题,例如设置开发环境,认识Objective-C语言,但后面的章节包含一些Cocoa和CocoaTouch独特的特性。
下面是各章主要内容的简介:
第1章Cocoa开发工具本章介绍Cocoa和CocoaTouch,以及在OSX和iOS上使用的架构。我们将介绍Xcode,这是这些平台编写代码要使用的集成开发环境(IDE)。本章也包含AppleDeveloperPrograms,如果想在Mac和iTunesAppStores上发布软件,这是很有必要的。
第2章使用Objective-C的面向对象编程本章介绍面向对象编程,Objective-C使用的编程模式,以及Objective-C如何实现面向对象编程。本章也包含Cocoa和CocoaTouch的内存管理,这是开发Mac程序和iOS程序最需要去了解的东西。
第3章Foundation本章介绍Foundation框架,它提供了基本数据类型(如字符串、数组和字典)。本章也讨论Cocoa和CocoaTouch主要依赖的底层设计模式。
第4章OSX和iOS应用程序本章讨论应用在Mac和iOS设备上如何安装和操作。在这一章,我们将讨论在两种平台上应用的生命周期,以及沙盒化如何应用访问数据和资源。
第5章图形用户界面本章将演示用户界面如何载入并呈现给用户。本章介绍Cocoa提供的一种最强大的概念:nibs,它预定义和预配置用户界面,能够直接连接到代码。本章也将讨论在OSX和iOS上使用的动画系统CoreAnimation,以及用户界面附加的物理特性UIDynamics。
第6章Block与操作队列本章介绍Block,这是由Objective-C引入到C语言中的一个非常灵活而有用的扩展。Block是一种函数,它能够被存储在变量中,并且可以像值一样被传递。这使得回调的实现变得非常简单。本章还介绍了操作队列,这是一种直接的方式来处理并发,不需要考虑线程。
第7章在视图中绘制图形在本章中,将学习同时适用于OSX和iOS中的绘图系统,以及如何绘制定制图形。本章还包括视网膜屏幕显示SpriteKit,以及视图坐标是如何工作的。
第8章音频与视频本章介绍使用AVFoundation播放音频和视频,音频的和视频引擎。也将学习如何使用iOS照片库,以及访问用户照片。
第9章模型对象和数据存储本章介绍了一套在OSX和iOS上同时可用的数据存储选项。还包括键值编码(Key-ValueCoding,KVC)和键值观察(Key-ValueObserving,KVO),偏好设置,通知,文件系统访问。此外,将学习如何制作安全域书签,这允许沙盒化的应用获取用户授权的访问。
第10章Cocoa绑定本章介绍了Cocoa绑定,这是一个非常强大的系统,允许连接应用用户界面到另一个应用数据,而不需要额外的连接代码。
第11章表视图和集合视图本章介绍表视图(一个有效的方式,用于向用户显示多行数据)和集合视图,允许给用户显示一组数据项。
第12章基于文档的应用程序本章同时讨论了iOS和OSX上的文件系统,这有助于创建与多个文件相关的应用。这里,我们讨论这两个平台处理文件方面的区别。
第13章网络Cocoa和CocoaTouch提供非常直接的方式来访问网络资源,本章将演示如何在保持应用持续响应的情况下从网上获取信息。本章还介绍网络服务探测系统Bonjour。
第14章与现实世界交互本章介绍各种用于连接真实世界的技术:CoreLocation,用于获得GPS访问;CoreMotion用于了解硬件是如何移动和确定方向的,并且也包含同时适用于iOS和OSX的打印系统。还将讨论Beacons、游戏控制器和地图。
第15章EventKit本章讨论iOS和OSX同时使用的日历系统,并演示如何获取用户日历的访问。我们也将讨论对用户隐私的考虑。
第16章Instruments和调试器本章介绍工具,这是用于Mac和iOS应用的分析器和分析工具。本章也将讨论一个应用崩溃的例子,崩溃的原因通过运行这个应用得以诊断并修复。另外,本章还包含Xcode内置调试器的使用。
第17章共享与通知本章讨论应用如何共享文字、图像,以及需要使用各种其他服务(如Twitter,Facebook)的内容,使用内置共享系统(不需要应用处理对这些服务的授权)。另外,我们还将介绍推送通知和本地通知,允许应用显示信息给未运行应用的用户。
第18章非标准应用程序不是每个应用都会被放置在用户的主屏幕上,本章将告诉如何写三种不同的非标准应用:命令行工具、菜单栏应用,以及偏好面板。
第19章文本处理本章介绍同时适用于iOS和OSX的字符串本地化系统TextKit,我们将在本章讨论使用内置数据探测器从文字中提取数据。
第20章iCloud本章讨论iCloud,它是苹果提供的云数据存储和同步系统。iCloud的功能和需求将被讨论,包含OSX和iOS的演示应用。
《Cocoa学习手册(第四版)》约定
以下是印刷上的约定:
斜体字(italic)表示新术语、URL、email地址、文件名以及文件扩展名。
固定宽度(Constant.width)用于程序清单,段落内引用程序元素,如变量或函数名、数据库、数据类型、环境变量、语句和关键词。
固定宽度粗体(Constant.width.Bold)显示命令或其他用户逐字输入的文字。固定宽度斜体(Constantwidthitalic)显示应该被用户支持的值或通过上下文决定的值替换的文字。
这个图标表示一个提示、建议。
这个图标表示一个普通的注意。
这个图标表示一个警告或警示。
使用示例代码
《Cocoa学习手册(第四版)》的补充材料(示例代码,练习等)可在下面的网址下载https://github.com/thesecretlab/LearningCocoa4thEd。
《Cocoa学习手册(第四版)》可以帮助你完成自己的工作。通常,可能会在自己的程序或文件中使用《Cocoa学习手册(第四版)》的代码。不需要联系我们获得许可,除非使用了这个代码的重要部分。例如,使用《Cocoa学习手册(第四版)》中几段代码编写一个程序不需要获得许可,然而销售或发布一个光盘,包含O'Reilly的书中示例,这需要获得许可。引用《Cocoa学习手册(第四版)》回答某些问题以及引用示例代码不需要许可。合并《Cocoa学习手册(第四版)》大量的示例代码到你的产品文件则需要获得许可。
不要求注明出处,但如注明表示感激。一个出处通常包括标题、作者,出版社以及ISBN。例如:“LearningCocoawithObjective-CbyJonathonManning,ParisButtfield-Addison,andTimNugent(O’Reilly).Copyright2014JonathonManning,ParisButtfield-Addison,andTimNugent,978-1-491-90139-7.”
如果你感觉对示例代码的使用超出了合法使用或以上允许的范围,请联系我们:permissions@oreilly.com。
Safari.BooksOnline
SafariBooksOnline(www,safaribookonline.com)是一个按需服务的数字图书馆,它将高质量的内容以书本和视频的形式表现出来,这些信息都来自技术上和商业上处于世界领先地位的作者。
技术专家,软件开发者,网页设计师,以及商业人士和有创意专业人士使用SafariBooksOline作为他们的主要资源,用于研究,解决问题,学习和专业认证训练。
SafariBooksOnline为组织、政府机构和个人提供了一系列的产品组合和定价程序。订阅者可以访问成千上万的图书,训练视频,以及一个可任意搜索的数据库(来自出版社,如O’ReillyMedia,PrenticeHallProfessional,Addison-WesleyProfessional,MicrosoftPress,Sams,Que,PeachpitPress,FocalPress,CiscoPress,JohnWiley&Sons,Syngress,MorganKaufmann,IBMRedbooks,Packt,AdobePress,FTPress,Apress,Manning,NewRiders,McGraw-Hill,Jones&Bartlett,CourseTechnology等)中的一个出版前的手稿。关于SafariBooksOnline的更多信息,请在线与我们联系。
联系我们
请发送关于《Cocoa学习手册(第四版)》的评论和问题到以下出版社:美国:
O’ReillyMedia,Inc.1005GravensteinHighwayNorthSebastopol,CA95472
中国:
北京市西城区西直门南大街2号成铭大厦C座807室(100035)奥莱利技术咨询(北京)有限公司
致谢
Jon感谢他的母亲、父亲,以及家庭中的其他成员对他的大力支持。
Paris感谢他饱受苦难的母亲,从孩提时代母亲的信用卡就成为他上百部移动设备的后备力量,这很有可能就是他现在沉迷于iPhone、iPad和移动设备的原因。
Tim感谢他的父母和家人忍受他相当乏善可陈的生活方式。
感谢我们的编辑BrianJepson和RachelRoumeliotis,他们的技术和建议对于《Cocoa学习手册(第四版)》的完成有着重大的贡献。同时,感谢所有O’ReillyMedia员工,在撰写《Cocoa学习手册(第四版)》的过程中,他们展现了在各自领域的卓越才能。
非常感谢TonyGray,感谢AUC给予我们的大力帮助,并感谢在本页上列出的其他人。如果没有他们,我们不会写这《Cocoa学习手册(第四版)》。
同时,感谢NealGoldstein,在将我们俩推进整《Cocoa学习手册(第四版)》写作的事情上,他一直都很负责。
感谢Maclab的工作人员对我们的支持,他们了解自己,并一直坚信着。再次感谢AdmiralDolphin,还有ChristopherLueg教授以及Tasmania大学与我们一起并肩作战的其他人员。
由于种种原因,我们还要感谢TimN、NicW、AndrewB、JessL和AshJ。最后,特别感谢SteveJobs,如果没有他,这《Cocoa学习手册(第四版)》不可能存在。