iPhone文档整理

更新时间:2024-05-17 21:57:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

iPhone开发模式:

1. 开发时可以采用MVC(Model ,view和Controller)模式。

MVC模式是将你的代码风格成独立的功能模块的良好方法。模型(Model)部分定义了底层数据引擎并负责维护这些数据的整合;视图(View)部分定义了用户界面,它并不知道显示在界面上的原始数据的具体含义;控制器(Controller)部分像是模型和视图之间的一坐桥梁,负责更新它们。

2. Target—Action(目标-操作)模式

控件(Controls)采用目标-行动模式来提醒程序用户的交互。当用户按照预定义的方式与某个控件交互时(例如按了某个按钮),控件会发送一个消息(动作)给指定的对象(目标)。当收到消息时,目标对象根据消息采用相应的方式进行响应(例如更新程序状态来响应按钮点击)。

3.Delegation(委托)模式。

代理模式是一种可以不必通过继承却可以改变复合类行为的途径。你可以将你的用于改变复合类行为代码放到单独的代理对象中有复合类来调用,而不必去继承。复合类会调用代理对象中的方法从而给它一次运行自己代码的机会来更改复合类的行为

4.管理内存模型(Managed Memory Model)

Objective-C采用\引用计数\的方式来决定合适清理对象所占的内存。当对象初次创建时,它的引用计数为1。其他对象可以调用改对象的retain, release 或 autorelease方法增加或减少此组件的引用计数。当对象的引用计数为0时,Objective-C运行环境会清理掉该对象所占的内存。

iPhone OS 技术分层:

Figure1 iPhone OS 技术分层

这样的分层给开发带来了多种选择。下面两层与硬件部分直接交互,例如,Core OS和Core Services层包含了iPhone OS的基本接口,包括文件的访问、底层数据类型、Bonjour服务和网络的Sockets等。这些接口大部分是基于C语言的,包括的技术有:Core Foundation、CFNetwork、SQLite、POSIX线程的访问和UNIX sockets。我觉得iPhone的内核应该是用C写的,而且Mach的内核是一种UNIX的内核,所以使用这两层进行程序开发,就相当于使用Linux 的API进行程序开发,在这两层,你可以使用你的代码直接操作硬件,当然这需要你对较底层的开发比较熟悉。

上面两层会有更多高级的技术,这些技术使用基于C和基于Objective-C的混合接口。比如,Media层包含了支持2D和3D绘图、音频和视频的基本技术。这一层包含了基于C的技术:OpenGL ES, Quartz, and Core Audio。同时也包含Core Animation,这时一种基于Objective-C的高级的动画引擎。Objective-C语言是C的面向对象的扩展,在这里可以看作是Linux中QT库一样,你可以像使用QT的类和接口那样来使用基于Objective-C的接口,这些都是使用Objective-C语言封装好的,它可以缩短开发的时间,但前提是要熟悉Objective-C语言。

最上面一层-Cocoa Touch层中,大部分的技术使用Objective-C。这层中的许多框架为你的程序提供了基础的底层构造。比如,Foundation框架为集合、文件管理和网络的操作提供了面向对象的支持。UIKit

1

框架为你的程序提供可视化的底层构架,包括窗口、视图、控件类和管理这些对象的控制器。这一层中的其它框架允许你访问用户的联系人和图片信息,以及设备上的加速器和其它硬件特征。在看多几个iPhone的程序之后,发现使用最多的就是UIKit框架,它提供了一个简单的图形界面程序所需要的控件,所以你可以是不熟悉Linux或Unix开发的程序员,你只要学会UIKit框架中控件的使用方法,你就可以创建iPhone程序。

新项目的出发点应该是Cocoa Touch层,特别是UIKit框架。当选择何种附加技术时,建议你从高层的框架开始,需要时,则应求助于低层的框架。如果要在你的程序中使用最少的工作量来支持标准的系统行为,更高层的框架会使这一过程变得简单。当要实现更高层中没有提供的定制行为时,这是唯一使用更低层框架的时间。

iPhone OS的更详细的技术概览,请参考iPhone OS编程指南。

个人认为,初学者应该从最上一层开始,尤其是从没有Mac开发经验的人。上层的框架会节省你开发的时间,并且上层的框架已经非常强大,可以基本满足一个简单程序所需的所有技术。 ?

Cocoa Touch层

Cocoa Touch是iPhone OS架构中最重要层之一。它包括开发iPhone应用的关键框架,当开发iPhone应用时,开发者总是从这些框架开始,然后向下追溯到需要的较低层框架。Cocoa Touch层包括UIKit框架,基础框架(Foundation Framework)和电话本UI框架(Address Book UI Framework)。

(1)UIKit框架

UIKit框架(UIKit.framework)包含 Objective-C 程序接口,提供实现图形、事件驱动的iPhone应用的关键架构。iPhone OS中的每一个应用采用这个框架实现如下核心功能:

? 应用管理; ? 支持图形和窗口; ? 支持触摸事件处理; ? 用户接口管理;

? 提供用来表征标准系统视图和控件的对象; ? 支持文本和Web内容;

? 通过URL scheme与其他应用的集成。

为提供基础性代码建立应用,UIKit也支持一些与设备相关的特殊功能,如下所示:

? 加速计数据; ? 内建Camera; ? 用户图片库; ? 设备名称和模式信息。

(2)基础框架(Foundation Framework)

基础框架(Foundation.framework)支持如下功能:

? Collection数据类型(包括Arrays、Sets); ? Bundles; ? 字符串管理; ? 日期和时间管理; ? 原始数据块管理; ? 首选项管理; ? 线程和循环; ? URL和Stream处理; ? Bonjour; ? 通信端口管理;

2

? 国际化。

(3)电话本UI框架(Address Book UI Framework)

电话本UI框架(AddressBookUI.framework)是一个Objective-C标准程序接口,主要用来创建新联系人,编辑和选择电话本中 存在的联系人。它简化了在iPhone应用中显示联系人信息,并确保所有应用使用相同的程序接口,保证应用在不同平台的一致性。 ?

媒体层(Media layer)

媒体层包括图像、音频和视频技术,采用这些技术在手机上创建最好的多媒体体验。更重要的是,应用这些技术开发的应用将有更好的视听效果。利用iPhone OS高层框架可以快速地创建先进的图像和动画。媒体层包括图像技术(Graphics Technologies,包括Quartz、Core Animation和OpenGL ES),音频技术(Audio Technologies,包括Core Audio和OpenAL)和视频技术(Video Technologies)。

(1)图像技术(Graphics Technologies)

高质量图像是所有iPhone应用的一个重要的组成部分。任何时候,开发者可以采用UIKit框架中已有的视图和功能以及预定义的图像来开发iPhone应用。然而,当UIKit框架中的视图和功能不能满足需求时,开发者可以应用下面描述的技术和方法来制作视图:

? Quartz。核心图像框架(CoreGraphics.framework)包含了Quartz 2D画图API,Quartz 与在

Mac OS中采用的矢量图画引擎是一样先进的。Quartz支持基于路径(Path-based)画图、抗混淆(Anti-aliased)重载、梯度 (Gradients)、图像(Images)、颜色(Colors)、坐标空间转换(Coordinate-space Transformations)、pdf文档创建、显示和解析。虽然API 是基于C语言的,它采用基于对象的抽象表征基础画图对象,使得图像内容易于保存和复用。

? 核心动画(Core Animation)。Quartz核心框架(QuartzCore.framework)包含CoreAnimation

接口,Core Animation是一种高级动画和合成技术,它用优化的重载路径(Rendering Path)实现复杂的动画和虚拟效果。它用一种高层的Objective-C接口配置动画和效果,然后重载在硬件上获得较好的性能。Core Animation集成到iPhone OS 的许多部分,包括UIKit类如UIView,提供许多标准系统行为的动画。开发者也能利用这个框架中的Objective-C接口创建客户化的动画。

? OpenGL ES。OpenGL ES框架(OpenGLES.framework)符合OpenGL ES v1.1规范,它提供

了一种绘画2D和3D内容的工具。OpenGL ES 框架是基于C语言的框架,与硬件设备紧密相关,为全屏游戏类应用提供高帧率(high frame rates)。开发者总是要使用OpenGL框架的EAGL接口,EAGL接口是OpenGL ES框架的一部分,它提供了应用的OpenGL ES画图代码和本地窗口对象的接口。

(2)音频技术(Audio Technologies)

? iPhone OS的音频技术为用户提供了丰富的音频体验。它包括音频回放,高质量的录音和触

发设备的振动功能等。

? iPhone OS的音频技术支持如下音频格式:AAC、Apple Lossless(ALAC)、A-law、IMA/ADPCM

(IMA4)、Linear PCM、μ-law和Core Audio等。

? 核心音频(Core Audio Family)。核心音频框架家族(Core Audio family of frameworks)

提供了音频的本地支持。Core Audio是一个基于C语言的接口,并支持立体声(Stereo Audio)。开发能采用iPhone OS 的Core Audio框架在iPhone 应用中产生、录制、混合和播放音频。开发者也能通过核心音频访问手机设备的振动功能。

? OpenAL。iPhone OS 也支持开放音频库(Open Audio Library, OpenAL)。OpenAL

是一个跨平台的标准,它能传递位置音频(Positional Audio)。开发者能应用OpenAL在需要位置音频输出的游戏或其他应用中实现高性能、高质量的音频。

3

由于OpenAL是一个跨平台的标准,采用OpenAL的代码模块可以平滑地移植到其他平台。

(3)视频技术(Video Technologies)

iPhone OS通过媒体播放框架(MediaPlayer.framework)支持全屏视频回放。媒体播放框架支持的视频文件格式包括.mov, .mp4,.m4v和.3gp,并应用如下压缩标准:

? MPEG4规范的视频部分;

? 众多的音频格式,包含在音频技术的列表里,如AAC、Apple Lossless (ALAC)、A-law、

IMA/ADPCM(IMA4)、线性PCM、μ-law和Core Audio等。

?

核心服务层(Core Services Layer) 核心服务层为所有应用提供基础系统服务。 (1)电话本

电话本框架(AddressBook.framework)提供了保存在手机设备中的电话本编程接口。开发者能使用该框架访问和修改存储在用户联系人数据库里的记录。例如,一个聊天程序可以使用该框架获得可能的联系人列表,启动聊天的进程(Process),并在视图上显示这些联系人信息等。 (2)核心基础框架

核心基础框架(CoreFoundation.framework)是基于C语言的接口集,提供iPhone应用的基本数据管理和服务功能。该框架支持如下功能:

? Collection数据类型(Arrays、 Sets等); ? Bundles; ? 字符串管理; ? 日期和时间管理; ? 原始数据块管理; ? 首选项管理; ? URL和Stream操作;

? 线程和运行循环(Run Loops); ? 端口和Socket通信

核心基础框架与基础框架是紧密相关的,它们为相同的基本功能提供了Objective-C接口。如果开发者混合使用Foundation Objects 和Core Foundation类型,就能充分利用存在两个框架中的\。toll-free bridging意味着开发者能使用这两个框架中的任何一个的核心基础和基础类型,例如Collection和字符串类型等。每个框架中的类和数据类型的描述注明该对象是否支持toll-free bridged。如果是,它与那个对象桥接(toll-free bridged)。

(3)CFNetwork

CFNetwork框架(CFNetwork.framework)是一组高性能的C语言接口集,提供网络协议的面向对象的抽象。开发者可以使用 CFNetwork框架操作协议栈,并且可以访问低层的结构如BSD Sockets等。同时,开发者也能简化与FTP和HTTP服务器的通信,或解析DNS等任务。使用CFNetwork框架实现的任务如下所示:

? BSD Sockets;

? 利用SSL或TLS创建加密连接; ? 解析DNS Hosts;

? 解析HTTP协议,鉴别HTTP和HTTPS服务器; ? 在FTP服务器工作;

? 发布、解析和浏览Bonjour服务。

(4)核心位置框架(Core Location Framework)

4

核心位置框架(CoreLocation.framework)主要获得手机设备当前的经纬度,核心位置框架利用附近的GPS、蜂窝基站或Wi- Fi信号信息测量用户的当前位置。iPhone地图应用使用这个功能在地图上显示用户的当前位置。开发者能融合这个技术到自己的应用中,给用户提供一些位置信息服务。例如可以提供一个服务:基于用户的当前位置,查找附近的餐馆、商店或设备等。 (5)安全框架(Security Framework)

iPhone OS除了内置的安全特性外,还提供了外部安全框架(Security.framework),从而确保应用数据的安全性。该框架提供了管理证书、公钥/私钥对和信任策略等的接口。它支持产生加密安全的伪随机数,也支持保存在密钥链的证书和密钥。对于用户敏感的数据,它是安全的知识库(Secure Repository)。

CommonCrypto接口也支持对称加密、HMAC和数据摘要。在iPhone OS里没有OpenSSL库,但是数据摘要提供的功能在本质上与OpenSSL库提供的功能是一致的。 (6)SQLite

iPhone应用中可以嵌入一个小型SQL数据库SQLite,而不需要在远端运行另一个数据库服务器。开发者可以创建本地数据库文件,并管理这些文件中的表格和记录。数据库SQLite为通用的目的而设计,但仍可以优化为快速访问数据库记录。访问数据库SQLite的头文件位于/usr/include/sqlite3.h,其中是SDK安装的目标路径。 (7)支持XML

基础框架提供NSXMLParser类,解析XML文档元素。libXML2库提供操作XML内容的功能,这个开放源代码的库可以快速解析和编辑 XML数据,并且转换XML内容到HTML。访问libXML2库的头文件位于目录/usr/include /libxml2/,其中是SDK安装的目标目录。 ?

核心OS(Core OS) 层

包含操作系统的内核环境、驱动和基本接口。内核基于Mac操作系统,负责操作系统的各个方面。它管理虚拟内存系统、线程、文件系统、网络和内部通信。核心OS层的驱动也提供了硬件和系统框架之间的接口。然而,由于安全的考虑,只有有限的系统框架类能访问内核和驱动。

iPhone OS提供了许多访问操作系统低层功能的接口集,iPhone 应用通过LibSystem库来访问这些功能,这些接口集如下所示:

? 线程(POSIX线程); ? 网络(BSD sockets); ? 文件系统访问; ? 标准I/O;

? Bonjour和DNS服务;

? 区域语言相关信息(Locale Information); ? 内存分配; ? 数学计算。

许多Core OS技术的头文件位于目录/usr/include/,iPhoneSDK是SDK的安装目录。

iPhone OS框架

iPhone OS框架提供了开发应用程序的接口,表16-2列出了框架的类、方法、函数、类型或常量的关键词前缀(Key Prefix)。开发者在自己的程序中应尽量避免使用这些关键词作为前缀。

5

(1)设备框架

表16-2描述了iPhone OS设备的框架,它们位于目录/Platforms/iPhoneOS. platform/Developer/SDKs//System/Library/Frameworks,这里的安装目录,是指定的SDK版本目录。 表16-2 设备框架表

名 称 AddressBook. framework AddressBookUI. framework AudioToolbox. ramework AudioUnit.framework 初始版本 2.0 2.0 2.0 2.0 前 缀 AB AB 描 述 包含直接访问用户 联系人数据库的功能 包含显示系统定义 联系人和编辑接口 AU, Audio 包含音频流数据处 理和音频播放与录制接口 AU, Audio 包含装载和使用音 频单元的接口 CF Audio CF 包含Wi-Fi和蜂窝基 站访问网络的接口 提供Core Audio数据类型 提供基础软件服务, 包括通用数据类型、 字符串应用、Collection Utilities、资源管理和 首选项的抽象 包含用户位置信息的接口 包含Quartz 2D的接口 包含Cocoa基础层的类和方法 包含设备接口 包含播放全屏视频接口 包含跨平台位置音频库 的OpenAL接口 CFNetwork.framework 2.0 CoreAudio.framework 2.0 CoreFoundation. framework 2.0 CoreLocation.framework 2.0 CoreGraphics.framework 2.0 Foundation.framework IOKit.framework OpenAL.framework OpenGLES.framework 2.0 2.0 2.0 2.0 CL CG NS N/A MP AL MediaPlayer.framework 2.0 EAGL, GL 包含OpenGL ES接口, 它是跨平台的2D和 3D图形库的OpenGL 的嵌入式版本 CA 包含Core Animation接口 CSSM, Sec 包含管理证书,公钥/ 私钥对和信任策略的接口 SC UI 包含设备网络配置的接口 包含iPhone应用的用 户界面的类和方法 QuartzCore.framework Security.framework System-Configuration. framework UIKit.framework 2.0 2.0 2.0 2.0 6

(2)模拟器框架(Simulator Framework)

虽然开发者针对设备框架开发代码,开发者也需要针对模拟器框架编译代码进行应用测试。设备框架和模拟器框架绝大多数是相同的,但也有一些细微的不同。例如,模拟器框架采用几个Mac OS X框架作为自己实现的一部分,这样由于系统的限制,设备框架和模拟器框架获得的接口可能有些细微的不同。表16-3描述了iPhone模拟器框架。iPhone模拟器框架位于目录/Platforms/iPhoneSimulator.platform/Developer/

SDKs//System/Library/Frameworks,的安装目录,是特别的Simulator SDK目录。 表16-3 模拟器框架(Simulator Framework)列表

名 称 Accelerate.framework AddressBook .framework AddressBookUI. framework Application- Services.framework AudioToolbox. framework AudioUnit.framework CFNetwork.framework CoreAudio.framework 2.0 2.0 2.0 2.0 2.0 2.0 2.0 2.0 CoreFoundation. framework 版 本 2.0 前 缀 描 述 cblas,vDSP, vv 模拟器内部使用的框架, iPhone 应用不能 引用这个框架 AB AB N/A AU, Audio AU,Audio CF Audio CF 包含直接访问联系人 数据库的函数 包含系统定义的联系 人选择器和编辑接口 包含指向核心 图形框架的指针 包含处理音频流和 音频播放与录制的接口 包含装载和使用音频 单元的接口 包含Wi-Fi和蜂窝基 站访问网络的接口 包含高层音频接口 提供基础软件服务, 包括通用数据类型、 字符串管理、Collection 应用、资源管理和首 选项管理等 包含Quartz 2D接口 包含用户位置接口 模拟器使用的内部框架 CoreGraphics. framework CoreLocation. framework CoreServices. framework Disk Arbitration.framework Foundation.framework

2.0 2.0 2.0 2.0 2.0 CG CL CF N/A NS 7

模拟器使用的内部框架 包含Cocoa 基础层的类和方法 IOKit.framework MediaPlayer. framework OpenAL.framework 2.0 N/A 2.0 2.0 2.0 N/A MP AL, al GL, gl 模拟器使用的内部框架 包含全屏视频播放接口 包含跨平台位置音 频库的OpenAL接口 包含OpenGL ES接口, 它是跨平台的2D 和3D图形库OpenGL 的嵌入式版本 包含Core Animation接口 包含管理证书、公 钥/私钥对和信任策略的接口 包含设备网络配置的接口 OpenGLES.framework QuartzCore.framework Security.framework System- Configuration .framework UIKit.framework 2.0 2.0 2.0 CA CSSM, Sec SC 2.0 UI 包含iPhone应用的 用户界面的类和方法

(3)系统库(System Libraries)

需要指出的是,Core OS and Core Services层的一些专业库并没有封装成框架。iPhone OS在系统目录/usr/lib中包含许多动态共享库,其后缀为.dylib,它们的头文件位于目录/usr/include。iPhone SDK的每个版本都包括动态共享库的本地复制。这些复制安装在开发系统,开发者能从Xcode 项目中链接它们。这些动态库位于/Platforms/

iPhoneOS.platform/Developer/SDKs//usr/lib,其中的安装目录,是指定的SDK版本目录。例如,iPhone OS 2.0 SDK的动态共享库位于目录:/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS2.0.sdk/usr/lib,相应的头文件位于/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS 2.0.sdk/usr/include。

iPhone OS用符号链接指向大多数库的当前版本。当使用链接动态共享库时,用符号链接代替链接库的某个版本。iPhone OS 将来有可能改变库的版本,如果当前开发的软件链接到库的某个固定版本,这个版本有可能将来在用户的系统中不存在。

8

本文来源:https://www.bwwdw.com/article/lje7.html

Top