ios的四个核心部分

来源:互联网 发布:淘宝女装店铺名字 编辑:程序博客网 时间:2024/04/29 11:50

IPHONE SDK 中文版参考库链接

http://www.apple.com.cn/developer/iphone/library/documentation/iPhone/Conceptual/iPhoneOSProgrammingGuide/Introduction/Introduction.html



ios的四个核心部分

ios的四个核心部分介绍

1.Cocoa Touch

Cocoa Touch层的关键技术。

(1)多任

      iOS SDK 4.0以及以后的SDK构建的程序(且运行在iOS 4.0和以后版本的设备上),用户按下Home按钮的时候程序不会结束;它们会挪到后台运行。UIKit帮助实现的多任务支持,让程序可以平滑切换到后台,或者切换回来。

为了节省电力,大多数程序进入后台后马上就会被系统暂停。暂停的程序还在内存里,但是不执行任何代码。这样程序需要重新激活的时候可以快速恢复,但是同时不浪费任何电力。然而,在如下原因下,程序也可以在后台下运行:

  • 程序可以申请有限的时间完成一些重要的任务。
  • 程序可以声明支持某种特定的服务,需要周期的后台运行时间。
  • 程序可以使用本地通知在指定的时间给用户发信息,不管程序是否在运行。

不管你的程序在后台是被暂停还是继续运行,支持多任务都不需要你做什么额外的事情。系统会在切换到后台或者切换回来的时候,通知程序。在这个时刻,程序可以直接执行一些重要的任务,例如保存用户数据等。

 

(2)打印

    iOS 4.2开始,UIKit引入了打印支持,允许程序把内容通过无线网路发送给附近的打印机。关于打印,大部分重体力劳动由UIKit承担。它管理打印接口,和你的程序协作渲染打印的内容,管理打印机里打印作业的计划和执行。

程序提交的打印作业会被传递给打印系统,它管理真正的打印流程。设备上所有程序的打印作业会被排成队列,先入先出的打印。用户可以从打印中心程序看到打印作业的状态。所有这些打印细节都由系统自动处理。

注意:仅有支持多任务的设备才支持无线打印。你的程序可使用 UIPrintInteractionController对象来检测设备是否支持无线打印。

 

(3)数据保

     iOS4.0起引入了数据保护功能,需要处理敏感用户数据的应用程序可以使用某些设备 内建的加密功能(某些设备不支持)。当程序指定某文件受保护的时候,系统就会把这个文件用加密的格式保存起来。设备锁定的时候,你的程序和潜在入侵者都无法访问这些数据。然而,当设备由用户解锁后,会生成一个密钥让你的程序访问文件。

要实现良好的数据保护,需要仔细考虑如何创建和管理你需要保护的数据。应用程序必须在数据创建时确保数据安全,并适应设备上锁与否带来的文件可访问性的变化。

 

(4)苹果推通知服

   iOS 3.0开始,苹果发布了苹果推通知服务,这一服务提供了一种机制,即使你的程序已经退出,仍旧可以发送一些新信息给用户。使用这种服务,你可以在任何时候,推送文本通知给用户的设备,可以包含程序图标作为标识,发出提示声音。这些消息提示用户,应该打开你的程序接收查看相关的信息。

从设计的角度看,要让iOS程序可以发送推通知,需要两部分的工作。首先,程序必须请求通知的发送,且在送达的时候能够处理通知数据。然后,你需要提供一个服务端流程去生成这些通知。这一流程发生在你自己的服务器上,和苹果的推通知服务一起触发通知。

 

(5)本地通知

    iOS 4.0开始,苹果推出了本地通知,作为推通知机制的补充,应用程序使用这一方法可以在本地创建通知信息,而不用依赖一个外部的服务器。运行在后台的程序,可以在重要时间发生的时候利用本地通知提醒用户注意。例如,一个运行在后台的导航程序可以利用本地通知,提示用户该转弯了。程序还可以预定在未来的某个时刻发送本地通知,这种通知即使程序已经被终止也是可以被发送的。

本地通知的优势在于它独立与你的程序。一旦通知被预定,系统就会来管理它的发送。在消息发送的时候,甚至不需要应用程序还在运行。

 

(6)手别器

    iOS 3.2起,引入了手势识别器,你可以把它附加到view上,然后用它们检测通用的手势,如划过或者捏合。附加手势识别器到view后,设置手势发生时执行什么操作。手势识别器会跟踪原始的触摸事件,使用系统预置的算法判断目前的手势。没有手势识别器,你就必须自己做这些计算,很多都相当的复杂。

UIKit包含了UIGestureRecognizer 类,定义了所有手势识别器的标准行为。你可以定义自己的定制手势识别器子类,或者是使用UIKit提供的手势识别器子类来处理如下的标准手势:

  • 点击(任何次数)
  • 捏合缩放
  • 平移或者拖动
  • 划过(任何方向)
  • 旋转(手指分别向相反方向)
  • 长按

 

(7)文件共享支持

    文件共享支持是从iOS 3.2开始引入的,利用它程序可以把用户的数据文件开发给iTunes 9.1以及以后版本。程序一旦声明支持文件共享,那么它的/Documents目录下的文件就会开放给用户。用户可以用iTunes放文件进去,或者取出来。这一特性并不允许你的程序和同一设备里面的其他程序共享文件;那种行为需要用剪贴板,或者文本交互控制对象(UIDocumentInteractionController来实现。

要打开文件共享支持,请:

  1. 在程序的Info.plist文件内加入键UIFileSharingEnabled,值设置为YES
  2. 把你要共享的文件放在程序的Documents目录内。
  3. 设备插到用户电脑时,iTunes在选定设备的程序页下面显示文件共享块。
  4. 用户可以在桌面上增加和删除文件。

支持文件共享的程序必须能够识别放到Documents目录内的文件,并正确的处理它们。例如,程序应该用自己的界面显示新出现的文件,而不是把这些文件列在目录里,问用户该如何处理这些文件。

 

(8)点对战

    iOS 3.0起引入的Game Kit框架提供了基于蓝牙的点对点对战功能。你可以使用点对点连接和附近的设备建立通讯,是实现很多多人游戏中需要的特性。虽然这主要是用于游戏的,但是也可以用于其他类型的程序中。

更多关于如何在程序中使用点对点对战功能的信息,参准系View Controller

Cocoa Touch层的很多框架提供了用来展现标准系统接口的View Controller。你应该尽量使用这些View Controller,以保持用户体验的一致性。任何时候你需要做如下操作的时候,你都应该用对应框架提供的View Controller

  • 显示和编辑联系人信息 - 使用Address Book UI框架提供的View Controller
  • 创建和编辑日历事件 - 使用Event Kit UI框架提供的View Controller
  • 编写email或者短消息 - 使用Message UI框架提供的View Controller
  • 打开或者预览文件的内容 - 使用UIKit框架里的UIDocumentInteractionController类。
  • 拍摄一张照片,或者从用户的照片库里面选择一张照片 - 使用UIKit框架内的UIImagePickerController类。
  • 拍摄一段视频 - 使用UIKit框架内的UIImagePickerController类。

 

(9)外部示支持

       iOS 3.2开始,引入了外部显示支持,允许一些iOS设备可以通过支持的缆线连接到外部的显示器上。连接时,程序可以用对应的屏幕来显示内容。屏幕的信息,包括它支持的分辨率,都可以用UIKit框架提供的接口访问。你也可以用这个框架来把程序的窗口连接到一个屏幕,或另外一个屏幕。

 

(10)Cocoa Touch框架

   下面的章节介绍Cocoa Touch层的框架和它们提供的服务。

  *Address Book UI框架

     Address Book UI框架(AddressBookUI.framework)是一个Objective-C的编程接口,用来显示创建新联系人、编辑和选择已有联系人的标准系统界面。这个框架让你可以轻松的在程序里面显示联系人信息,同时确保你的程序使用和其他程序一样的接口,保持了平台的一致性。

 

  *Event Kit UI框架

   iOS 4.0开始,引入了Event Kit UI框架(EventKitUI.framework)提供了用来显示和编辑事件的view controller。这个框架基于Event Kit框架提供的事件相关数据结构,参见Event Kit框架。

 

   *Game Kit框架

      iOS 3.0引入了Game Kit框架(GameKit.framework)支持在程序中进行点对点的网络通讯。尤其是这个框架支持了点对点的连接和游戏内的语音通话功能。虽然这些功能主要是用于多人对战网络游戏,但是也可以在非游戏程序中使用。这个框架提供的网络功能是构建在Bonjour之上几个简单的类实现的。这些类抽象了很多网络细节,让没有网络编程经验的开发者也可以轻松地在程序中加入网路功能。

 

   *iAd框架

       iOS 4.0引入了iAd框架(iAd.framework)支持程序中显示banner广告。广告由标准的view构成,你可以把它们插入到你的用户界面中,恰当的时候显示。View本身和苹果的广告服务通讯,处理一切载入和展现广告内容以及响应点击等工作。

 

   *Map Kit框架

       iOS 3.0引入了Map Kit框架(MapKit.framework)提供了一个可以嵌入到程序里的地图接口。基于该接口的行为,它提供了可缩放的地图view,可标记定制的信息。你可以把它嵌入在程序的view里面,编程设置地图的属性,保存当前显示的地图区域和用户的位置。你还可以定义定制标记,或者使用标准标记(大头针标记),突出地图上的区域,显示额外的信息。

iOS 4.0开始,这个框架加入可拖动标记和定制覆盖对象的功能。可拖动标记令你可以移动一个已经被放置到地图上的标记,编程,也可以通过用户行为。覆盖对象提供了创建比标记点更复杂的地图标记的能力。你可以使用覆盖对象在地图上来放置信息,例如公交路线,选区图,停车区域,天气信息(如雷达数据)。

 

   *Message UI框架

      iOS 3.0引入了Message UI框架(MessageUI.framewok)提供了编写和查询发建箱消息的能力。编写支持包含了一个可以在程序中显示的view controller接口。你可以在接口中填写你要发送信息的内容。你可以设置收信人,主题和内容,以及附件。用户可以选择信息的优先级。选定后,信息就会在用户的发件箱里面排队等待发送。

iOS 4.0和以后的系统,这个框架开始支持用来编写短消息的view controller。你可以使用这种view controller来创建和编辑短消息,而不用离开程序。和邮件编写接口一样,这个接口让用户选择发送前是否编辑一下。

 

2.Media

Media层提供了图片,音乐,影片等多媒体功能。图像分为2D图像和3D图像, 前者由Quartz2D来支持,后者则是用OpenglES.与音乐对应的模组是Core Audio和OpenAL, Media Player 实现了影片的播放, 而最后还提供了Core Animation来对强大动画的支持。具体介绍如下:

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

核心音频框架:

框架(Framework)            服务(Service)

CoreAudio.framework         定义核心音频的音频数据类型

AudioUnit.framework            提供音频和流媒体文件的回放和录制,并且管理音

                                             频文件和播放提示声音

AudioToolbox.framework    提供使用内置音频单元服务,音频处理模块

     ② OpenAL。iPhone OS 也支持开放音频库(Open Audio Library, OpenAL)。OpenAL是一个跨平台的标准,它能传递位置音频(Positional Audio)。开发者能应用OpenAL在需要位置音频输出的游戏或其他应用中实现高性能、高质量的音频。由于OpenAL是一个跨平台的标准,采用OpenAL的代码模块可以平滑地移植到其他平台。

3)视频技术(Video Technologies)

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

    ① H.264 Baseline Profile Level 3.0 video,在30 f/s 的情况下分辨率达到640×480像素。注意:不支持B frames;

    ② MPEG4规范的视频部分;

    ③ 众多的音频格式,包含在音频技术的列表里,如AAC、Apple Lossless (ALAC)、A-law、IMA/ADPCM(IMA4)、线性PCM、μ-law和Core Audio等。     

 

3.Core Services

Core Services在Core OS基础上提供了更为丰富的功能, 它包含了Foundation.Framework和Core Foundation.Framework, 之所以叫Foundation ,就是因为它提供了一系列处理字串,排列,组合,日历,时间等等的基本功能。Foundation是属于Objective-C的API,Core Fundation是属于C的API。另外Core servieces还提供了其他的功能,比如:

    Security, Core Location, SQLite, 和Address Book. 其中Security是用来处理认证,密码管理,按安全性管理的; Core Location是用来处理GPS定位的;SQLLite是轻量级的数据库,而AddressBook则用来处理电话薄资料的。下面是具体介绍:

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"。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)

     核心位置框架(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的头文件位 于<iPhoneSDK>/usr/include/sqlite3.h,其中<iPhoneSDK>是SDK安装的目标路径。

7)支持XML

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

 

4.Core OS

核心服务层为所有应用提供基础系统服务,即使不直接使用这些服务,也应该了解内置在该系统中的技术。

1)电话本

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

2)核心基础框架

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

Collection数据类型(Arrays Sets等);

Bundles

字符串管理;

日期和时间管理;

原始数据块管理;

首选项管理;

URLStream操作;

线程和运行循环(Run Loops);

端口和Socket通信。

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

3CFNetwork

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

BSD Sockets

利用SSLTLS创建加密连接;

解析DNS Hosts

解析HTTP协议,鉴别HTTPHTTPS服务器;

FTP服务器工作;

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

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

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

5)安全框架(Security Framework

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

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

6SQLite

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

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

原创粉丝点击