OS X和iOS公共框架列表

来源:互联网 发布:淘宝内衣真人秀图片 编辑:程序博客网 时间:2024/06/16 01:16

原文:http://book.2cto.com/201403/41492.html


表2-2列出了OS X和iOS中的框架,并且列出了开始支持这些框架的操作系统版本。版本号信息取自于苹果的官方文档[3,4],在官方文档中也能找到类似的表格(而且还有可能更新)。这些框架具有很多重合度,有很多框架从OS X移植到了iOS,还有一些框架从iOS移植回OS X(例如CoreMedia)。在Mountain Lion中从iOS移植的框架更多,例如Game Center和Twitter都是从iOS移植的框架。此外,还有一些OS X的框架在iOS中以私有框架的形式存在。
表2-2  Mac OS X和iOS中的公共框架


框    架OS X版本iOS版本作    用AGL10.0--OpenGL的Carbon接口Accounts10.85.0用户账号数据库——用于支持单点登录Accelerate10.34.0加速的向量操作AddressBook10.22.0地址簿相关的功能AddressBookUI--2.0显示联络人信息的UI(iOS)AppKit10.0--Cocoa的主要库之一(由Cocoa.Framework依赖),本身是其他库的保护伞。还包含XPC(在iOS中为私有框架)AppKitScripting10.0--被Appkit替代AppleScriptKit10.0--AppleScript的插件AppleScriptObjC10.0--AppleScript的基于Objective-C的插件AppleShareClientCore10.0--AFP客户端实现AppleTalk10.0--AFP协议的核心实现
(续表)  
框    架OS X版本iOS版本作    用ApplicationServices10.0--CoreGraphics、CoreText、ColorSync和其他一些框架的保护伞框架(仅头文件),还包含 SpeechSynthesis(这是作者的最爱)AudioToolBox10.02.0音频录制/处理以及其他相关功能AssetsLibrary--4.0照片和视频AudioUnit10.02.0音频单元(插件)和编解码器AudioVideoBridging10.8--AirPlayAVFoundation10.72.2对于音频/视频媒体的Objective-C支持。最近才移植到LionAutomator10.4--Automator插件支持CalendarStore10.5--iCal支持Carbon10.0--OS 9的遗产API Carbon的保护伞框架(仅头文件)Cocoa10.0--Cocoa API的保护伞框架(仅头文件),包含AppKit、CoreData和FoundationCollaboration10.5--CBIdentity*系列APICoreAudio10.02.0音频抽象层CoreAudioKit10.4--音频的Objective-C接口CoreBlueTooth--5.0蓝牙相关的APICoreData10.43.0数据模型,包含NSEntityMappings等CoreFoundation10.02.0从字面上可以理解,向其他所有框架提供基础数据结构(各种CF开头的类)的核心框架CoreLocation10.62.0GPS相关的服务CoreMedia10.74.0音频和视频相关的底层例程CoreMediaIO10.7--CoreMedia的抽象层CoreMIDI10.0--MIDI客户端接口CoreMIDIServer10.0--MIDI驱动程序接口CoreMotion--4.0加速度计和陀螺仪相关的接口CoreServices10.0--AppleEvents、Bonjour、Sockets、Spotlight、FSEvents以及很多其他服务框架的保护伞框架(嵌套的子框架)CoreTelephony--4.0电话相关的数据CoreText10.53.2文本和字体相关的框架。在OS X中这是 ApplicationServices框架中的子框架CoreVideo10.54.0被其他库使用的视频格式支持CoreWifi10.8P在iOS中,这个框架称为“MobileWiFi”,而且是私有的框架
 (续表)  
框    架OS X版本iOS版本作    用CoreWLAN10.6--无线LAN(WiFi)相关的框架DVComponentGlue10.0--数字视频录制器/相机DVDPlayback10.3--DVD播放DirectoryService10.0--LDAP访问DiscRecording10.2--光盘烧录相关的库DiscRecordingUI10.2--光盘烧录相关的库和用户界面DiskArbitration10.4--系统卷管理器DiskArbitrationD的接口DrawSprocket10.0--Sprocket组件EventKit10.84.0Calendar支持EventKitUI--4.0Calendar用户界面ExceptionHandling10.0--Cocoa异常处理ExternalAccessory--3.0处理插在iPad/iPod/iPhone上的硬件配件的库FWAUserLib10.2--火线音频库ForceFeedback10.2--处理力反馈功能的设备(游戏杆、游戏板等)Foundation10.02.0底层数据结构支持GameKit10.83.0游戏的点对点连接GLKit10.85.0OpenGLES辅助库GLUT10.0--OpenGL Utility框架GSS10.75.0Generic Security Services API(RFC2078),带有一些苹果私有的扩展iAd--4.0苹果的移动广告分发系统ICADevices10.3--扫描仪/照相机相关的库(类似于TWAIN)IMCore10.6--由InstantMessaging内部使用ImageCaptureCore10.6P替代了之前的ImageCaptureImageIO--4.0图像格式的读写IMServicePlugin10.7--iChat服务提供者InputMethodKit10.5--替换的输入方法InstallerPlugins10.4--系统安装器插件InstantMessage10.4M即时消息和iChatIOBluetooth10.2--OS X的蓝牙支持IOBluetoothUI10.2--OS X的蓝牙支持IOKit10.02.0设备驱动程序的用户态组件
 (续表)  
框    架OS X版本iOS版本作    用IOSurface10.6P在应用程序之间共享图像JavaEmbedding10.0~10.7--在Carbon中嵌入Java。在Lion和更新的版本中不再支持JavaFrameEmbedding10.5--在Cocoa中嵌入JavaJavaScriptCore10.55.0Safari和其他WebKit程序使用的JavaScript解释器JavaVM10.0--Java运行时库的苹果移植Kerberos10.0--提供Kerberos支持(Active Directory整合和一些UNIX域要求这项支持)Kernel10.0--内核扩展所需要的框架LDAP10.0P最早的LDAP支持,被OpenDirectory所替代LatentSemanticMapping10.5--隐含语义映射MapKit--4.0嵌入地图和地理信息编码数据MediaPlayer--2.0iPod播放器界面和电影播放界面MediaToolbox10.8P Message10.0P电子邮件消息的支持MessageUI--3.0发送消息和Mail.app(ComposeView和其他相关的视图)的UI资源MobileCoreServices--3.0精简版的CoreServicesNewsstandkit--5.0支持iOS 5.0引入的“Newsstand”NetFS10.6--网络文件系统(AFP、NFS)OSAKit10.4--Cocoa中整合OSA脚本的支持OpenAL10.42.0跨平台音频库OpenCL10.6PGPU/并行编程框架OpenDirectory10.6--Open Directory(LDAP)的Objective-C绑定OpenGL10.0--OpenGL——3D图形支持。在受支持的芯片组上链接至OpenCLOpenGLES--2.0嵌入式OpenGL——在iOS上替换OpenGLPCSC10.0--智能卡的支持PreferencePanes10.0--System Preference面板支持。System Preference中的面板实际上都是保存在/System/Library/PreferencePanes目录下的bundlePubSub10.5--RSS/Atom支持Python10.3--Python脚本语言QTKit10.4--QuickTime支持Quartz10.4--保护伞框架,包括PDF支持、ImageKit、QuartzComposer、QuartzFilter和QuickLookUI。负责系统中大部分2D图形的绘制
 (续表)  
框    架OS X版本iOS版本作    用QuartzCore10.42.0Quartz和Core相关的框架之间的接口QuickLook10.54.0文件预览和缩略图生成QuickTime10.0--Quicktime嵌入Ruby10.5--流行的脚本语言RubyRubyCocoa10.5--Ruby语言的Cocoa绑定SceneKit10.8--3D渲染。在Lion中是私有框架,但是在Mountain Lion中成为了公共框架ScreenSaver10.0--屏幕保护相关的APIScripting10.0--最早的脚本框架,现已废弃ScriptingBridge10.5--Objective-C语言的脚本适配器Security10.03.0证书、密钥和安全随机数等的支持SecurityFoundation10.0--SF*系列认证SecurityInterface10.3--证书、认证和钥匙链相关的用户界面的SF*系列头文件ServerNotification10.6--Notficiation支持ServiceManagement10.6--launchd的接口StoreKit10.73.0应用内购的支持SyncServices10.4--和.Mac同步日历System10.02.0其他框架内部使用的框架SystemConfiguration10.0、10.32.0包含SCNetwork和SCDynamicStoreTWAIN10.2--扫描仪支持Twitter10.85.0Twitter支持(在iOS 5中)Tcl10.3--TCL解释器Tk10.4--Tk ToolkitsUIKit--2.0Cocoa Touch——AppKit在iOS上的替代VideoDecodeAcceleration10.6.3--通过GPU进行H.264加速(TN2267)VideoToolkit10.8P替代QuickTime图像压缩管理器,提供视频格式支持WebKit10.2PHTML渲染(Safari的核心)XgridFoundation10.4~10.7--Xgrid集群(在Mountain Lion中被移除)vecLib10.0--向量计算(Accelerate的子框架)
 

练习:演示框架的强大

OS X的框架真是技术的奇迹。不论从什么角度看,框架的精巧设计和可重用性都是超群的。图形相关的框架中有很多出色的例子,但是SpeechSynthesis.Framework框架的例子是真正有用而且同样令人印象深刻的。

利用这个框架,可以快速简单地将Text-to-Speech特性嵌入到程序中,充分利用苹果已经实现(大部分由苹果实现,而且由苹果完善)的复杂逻辑。/System/Library/Speech目录下面包含Synthesizers(合成器)目录(Mountain Lion中包含两个:MacinTalk和MultiLingual),其中包含的都是Mach-O格式的二进制bundle。这些bundle可以像库一样加载至几乎任何进程中。此外,还有一些预编程好的声音(在Voices/子目录中)和Recognizers(识别器,用于Speech-to-Text)。声音将音高和其他语音参数编码在一种自主产权的二进制格式中。在苹果开发者文档“The Speech Synthesis API”中对此有详细描述。苹果还提供了一个很酷的工具用于自定义语音:“Repeat After Me”(这是Xcode的一部分,位于/Developer/Applications/Utilities/ Speech/Repeat After Me)。

然而一般的开发者却不需要关心这些。通过SpeechSynthesis.Framework框架(当然也有其他方法)可以访问语音合成器,这个框架本身位于ApplicationServices框架(对于Carbon)或AppKit(对于Cocoa)。通过使用这个框架,一个C语言或Objective-C语言的应用程序可以利用区区数行代码实现Text-to-Speech的功能(使用系统中提供的多种声音中的一种声音),下面的例子就演示了如何实现这一点。这个例子展示了一个利用OS X提供的Text-to-Speech功能的简单示例(这个例子比较简单粗暴)。

为了避免涉及凌乱的Objective-C语法,代码清单2-3列出的示例代码使用的是C语言,因此使用的是ApplicationServices框架而不是AppKit框架。

代码清单2-3:演示如何简单地实现say(1)实用工具的(部分)功能

#include <ApplicationServices/ApplicationServices.h>

// OS X say(1)命令的简单粗暴实现

// 编译时传入-framework ApplicationServices参数

void main (int argc, char **argv) {

OSErr rc;

    SpeechChannel channel;

    VoiceSpec vs;

    int voice;

    char *text = "What do you want me to say?";

    if (!argv[1]) { voice = 1; } else { voice = atoi(argv[1]); }

    if (argc == 3) { text = argv[2]; }

    // GetIndVoice获得某个索引(正数)定义的声音

    rc= GetIndVoice(voice, // SInt16      index,

                        &vs); // VoiceSpec * voice

    // NewSpeechChannel函数使得选定的声音可用

    rc = NewSpeechChannel(&vs,// VoiceSpec * voice, /* 可以为NULL */

                          &channel);

    // 调用SpeakText函数说出文本

    rc = SpeakText(channel,     // SpeechChannel chan,

                   text,            // const void *  textBuf,

                   strlen(text));  //unsigned long  textBytes

    if (rc) { fprintf (stderr,"Unable to speak!\n"); exit(1);}

    // 由于语音播放是异步的,所以要等待播放结束。

    // Objective-C可以使用更为优雅的回调函数

    while (SpeechBusy()) sleep(1);

    exit(0);

}

这个语音框架也可以通过其他方法访问。有一些其他语言也有这个框架的绑定,例如Python和Ruby;对于非程序员,还可以使用命令行工具say(1)(也就是上面这个例子模仿的程序),此外还可以使用苹果优秀的脚本语言Applescript(通过osascript(1)访问)。您可以自己尝试一下,玩一玩命令行程序(这也有可能会闹笑话,或者说是有创意的用法,参见图2-3中的漫画)。
 

 

2-3  OS X语音特性的其他有创意的用法。摘自有意思的网站 http://XKCD.com/530
(
漫画中的人物所需要的命令是osascript -eset Volume 10)

根据前文所述,应用程序可以完全依赖于框架,事实上很多OS X和iOS应用就是这么干的。然而框架本身也依赖于操作系统提供的库,下面就要讨论库。


0 0
原创粉丝点击