iOS 大纲
iOS 由操作系统和应用技术构成。虽然和 Mac OS X 共用了很多技术,但是 iOS 是专门为了移动设备而设计的。当然如果你以前做过 Mac OS X 的应用程序,你会发现很多相似之处,但是很多技术只能在 iOS 里面使用,比如支持多触点和遥感等。
iOS SDK 包含了 API ,文档和一些工具 , 这些工具用来开发、测试、运行、调式和在 App Store 上发布应用。 iOS 的官方 IDE 是 Xcode,Xcode 可以编译,测试和调式你的代码,并且设置断点在你的设备上调式程序,当然在应用的开发阶段你也可以使用 Xcode 上的模拟器来模拟的你的 iOS 环境,同样可以调式、编译和运行。( 业界大型的 iPhone 游戏更多的是用 VS C++ 利用 OpenGL 来开发的, Xcode 只是最后用来集成和测试的。)
这篇文章是从一个比较高的层面来讲解 iOS 的架构,你也可以查看其他的文章帮助你快速了解 iOS 的底层信息。
文章大纲:
1.iOS 技术层级
2. 为 iOS 写代码
3. 开始 iOS 之旅
1.iOS 技术层级
iOS 核心层是基于 Mac OS X 的,他们有很多共同点基础类。在核心层上面是服务层( iOS Services ),服务层( iOS Services )是为应用提供 API 的 .
服务层( iOS Services )大部分是基于 C 语言写的。核心层和服务层( iOS Services )包含了很多基础性的类库,比如底层数据类型 (low-level data types), Bonjour 服务( Bonjour 服务是指用来提供设备和电脑通讯的服务) , 和网络连接类库 (network sockets) 等等。服务层( iOS Services )包括了 Foundation 核心类库, CFNetwork 类库 , SQLite 访问类库 , 访问 POSIX 线程类库和 UNIX sockets 的通讯类库,等等。
在服务层( iOS Services )的上层是多媒体应用层( Media layer ),多媒体应用层是用 c 语言和 Objective-C 混合写成。多媒体应用层包含了基本的类库来支持 2D 和 3D 的界面绘制,音频和视频的播放。这一层包括了一些基于 C 语言的技术,比如 OpenGL ES, Quartz, 和 Core Audio 。当然也包括了基于 Objective-C 的较高一层次的动画引擎。
多媒体应用层( Media layer )上一层是( Cocoa Touch )层,这一层大部分代码是基于 Objective-C 的。这一层提供了很多基础性的类库 Foundation ,比如提供了面向对象的集合类,文件管理类,网络操作类等等。比如, UIKit 框架提供了可视化的编程方式,比如包含了 window, views, controls 和 controllers 管理这些类。当然 其他的类库也提供了一些非常实用的功能,比如访问用户的通讯录,照片集,重力感应器,和一些访问硬件设备的功能。
如果你想马上开始做一个新项目,那么你最好使用( Cocoa Touch )层,特别你准备使用 UIKit 框架的时候。使用高级别的框架比使用低级别的框架更加容易使用,建议只有当高级别的框架没有现成的方法的时候,才考虑使用更低级别的框架。
更多的技术细节,查看 iOS Technology Overview .
iOS SDK 支持创建一个图形化的应用程序,这个创建的应用程序可以被创建在iphone的桌面上,并且是独立于其他的程序,比如图片,天气,时钟。它会在一个独立的沙箱里,这个会在以后描述。当你的程序运行的时候,你的程序会占用整个iphone的界面。如果你开发过windows下的应用程序,你肯定熟悉什么叫多文档应用,很遗憾,iOS并不支持多文档模式,iOS的应用只能在独立的窗口下显示,不能在一个应用里多窗口切换。
在 iOS 中,事件处理模式和经典的桌面系统( windows )是不一样的。经典的事件处理模式是相应鼠标和键盘,因为 PC 的主要外设就是鼠标和键盘。而 iOS 并没有鼠标和键盘,所以 iOS 的事件处理模式是基于触摸的。一个触摸事件可以发生在任何时间,也可以和其他触摸事件组成另外一个事件,比如多触点。这些触摸事件既可以用来检测简单的操作,比如选择和拖放某个项目,也可以检测到复杂的操作,比如滑动(类似与刷卡的动作,在忍者水果中的切的效果)、捏开和捏拢(照片的放大、缩小操作)。
当你准备做一个 iOS 应用程序时,你不仅仅要考虑程序的代码结构,基于什么基础构架,更重要的是考虑这个应用的用户会怎么使用它。 iOS 应用程序应该是操作和界面都简洁的,而且关注于最终用户的实际需求。记住,你的用户很忙,他需求的是最快的获得他所要的信息,而不是花很多时间在一些华而不实的界面之间切换来切换去。所以请提供一个简单的界面布局,并且把关键的信息放在醒目的位置。在游戏或者其他一些娱乐类应用,你可以考虑多增加一些互动性的技术,比如重力感应和摄像头技术,这在其他游戏平台是不多见的。
当你第一次开发 iOS 应用的时候,你很可能只使用 Foundation 和 UIKit 框架,这两个框架提供了基础的 API 支持和一些关键的服务。不过当你想提升你应用程序的档次的时候,你可能会需要集合其他一些框架。下面这些链接可以帮助你学习更多的框架知识。
查看更多技术细节看 Foundation Framework Reference 和 UIKit Framework Reference .
创建一个简单的 iOS 应用程序最简单的是使用 Xcode 的模版,当然如果你希望你的应用程序非常好用而且界面美观,你还是需要多阅读一点相关的文档。至少你应该阅读一下如何使用 Xcode 和怎么样一步一步创建应用程序的文章,在官方的 iOS Dev Center 。
如果你是对 iOS 和 Mac OS X 一无所知,那么你需要花点时间去理解平台的基础设计模式和内部结构。因为只有当你的应用程序选择了最给力的框架时候,你的应用程序才是最流畅最给力的。所以如果你花一些时间来选择这些框架时,你可能会发现创建一个应用程序比学习基础设计模式困难多了。每一个 iPhone , iOS 开发者都需要了解的框架是 Cocoa Fundamentals Guide 。这个文档讲解了 Objective-C 语言和 UIKit 的设计模式,当然还有一些其他框架的内容 。
当你理解了基础构架后,你可以查看这个文档 iOS Application Programming Guide ,这个文档提供了具体的开发细节和开发流程。这个文档提供了重要的关于如何编写 iPhone 应用程序的概念和任务为基础的信息,包含一些实例:怎么创建用户界面,事件处理和 iOS 的一些关键功能。并且还描述了整个开发过程,并解释如何使用 Xcode 编译和运行应用程序。
除了看这个文档以外,你还应该浏览一些苹果官方的代码示例。这些示例代码几乎包含所有的 iOS 技术点,你可以使用这些示例代码开始你的应用程序也可以学习一下某些技术点的详细用法。