OS X和iOS公共框架列表

原文: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版本 作    用
AGL 10.0 -- OpenGL的Carbon接口
Accounts 10.8 5.0 用户账号数据库——用于支持单点登录
Accelerate 10.3 4.0 加速的向量操作
AddressBook 10.2 2.0 地址簿相关的功能
AddressBookUI -- 2.0 显示联络人信息的UI(iOS)
AppKit 10.0 -- Cocoa的主要库之一(由Cocoa.Framework依赖),本身是其他库的保护伞。还包含XPC(在iOS中为私有框架)
AppKitScripting 10.0 -- 被Appkit替代
AppleScriptKit 10.0 -- AppleScript的插件
AppleScriptObjC 10.0 -- AppleScript的基于Objective-C的插件
AppleShareClientCore 10.0 -- AFP客户端实现
AppleTalk 10.0 -- AFP协议的核心实现
(续表)  
框    架 OS X版本 iOS版本 作    用
ApplicationServices 10.0 -- CoreGraphics、CoreText、ColorSync和其他一些框架的保护伞框架(仅头文件),还包含 SpeechSynthesis(这是作者的最爱)
AudioToolBox 10.0 2.0 音频录制/处理以及其他相关功能
AssetsLibrary -- 4.0 照片和视频
AudioUnit 10.0 2.0 音频单元(插件)和编解码器
AudioVideoBridging 10.8 -- AirPlay
AVFoundation 10.7 2.2 对于音频/视频媒体的Objective-C支持。最近才移植到Lion
Automator 10.4 -- Automator插件支持
CalendarStore 10.5 -- iCal支持
Carbon 10.0 -- OS 9的遗产API Carbon的保护伞框架(仅头文件)
Cocoa 10.0 -- Cocoa API的保护伞框架(仅头文件),包含AppKit、CoreData和Foundation
Collaboration 10.5 -- CBIdentity*系列API
CoreAudio 10.0 2.0 音频抽象层
CoreAudioKit 10.4 -- 音频的Objective-C接口
CoreBlueTooth -- 5.0 蓝牙相关的API
CoreData 10.4 3.0 数据模型,包含NSEntityMappings等
CoreFoundation 10.0 2.0 从字面上可以理解,向其他所有框架提供基础数据结构(各种CF开头的类)的核心框架
CoreLocation 10.6 2.0 GPS相关的服务
CoreMedia 10.7 4.0 音频和视频相关的底层例程
CoreMediaIO 10.7 -- CoreMedia的抽象层
CoreMIDI 10.0 -- MIDI客户端接口
CoreMIDIServer 10.0 -- MIDI驱动程序接口
CoreMotion -- 4.0 加速度计和陀螺仪相关的接口
CoreServices 10.0 -- AppleEvents、Bonjour、Sockets、Spotlight、FSEvents以及很多其他服务框架的保护伞框架(嵌套的子框架)
CoreTelephony -- 4.0 电话相关的数据
CoreText 10.5 3.2 文本和字体相关的框架。在OS X中这是 ApplicationServices框架中的子框架
CoreVideo 10.5 4.0 被其他库使用的视频格式支持
CoreWifi 10.8 P 在iOS中,这个框架称为“MobileWiFi”,而且是私有的框架
 (续表)  
框    架 OS X版本 iOS版本 作    用
CoreWLAN 10.6 -- 无线LAN(WiFi)相关的框架
DVComponentGlue 10.0 -- 数字视频录制器/相机
DVDPlayback 10.3 -- DVD播放
DirectoryService 10.0 -- LDAP访问
DiscRecording 10.2 -- 光盘烧录相关的库
DiscRecordingUI 10.2 -- 光盘烧录相关的库和用户界面
DiskArbitration 10.4 -- 系统卷管理器DiskArbitrationD的接口
DrawSprocket 10.0 -- Sprocket组件
EventKit 10.8 4.0 Calendar支持
EventKitUI -- 4.0 Calendar用户界面
ExceptionHandling 10.0 -- Cocoa异常处理
ExternalAccessory -- 3.0 处理插在iPad/iPod/iPhone上的硬件配件的库
FWAUserLib 10.2 -- 火线音频库
ForceFeedback 10.2 -- 处理力反馈功能的设备(游戏杆、游戏板等)
Foundation 10.0 2.0 底层数据结构支持
GameKit 10.8 3.0 游戏的点对点连接
GLKit 10.8 5.0 OpenGLES辅助库
GLUT 10.0 -- OpenGL Utility框架
GSS 10.7 5.0 Generic Security Services API(RFC2078),带有一些苹果私有的扩展
iAd -- 4.0 苹果的移动广告分发系统
ICADevices 10.3 -- 扫描仪/照相机相关的库(类似于TWAIN)
IMCore 10.6 -- 由InstantMessaging内部使用
ImageCaptureCore 10.6 P 替代了之前的ImageCapture
ImageIO -- 4.0 图像格式的读写
IMServicePlugin 10.7 -- iChat服务提供者
InputMethodKit 10.5 -- 替换的输入方法
InstallerPlugins 10.4 -- 系统安装器插件
InstantMessage 10.4 M 即时消息和iChat
IOBluetooth 10.2 -- OS X的蓝牙支持
IOBluetoothUI 10.2 -- OS X的蓝牙支持
IOKit 10.0 2.0 设备驱动程序的用户态组件
 (续表)  
框    架 OS X版本 iOS版本 作    用
IOSurface 10.6 P 在应用程序之间共享图像
JavaEmbedding 10.0~10.7 -- 在Carbon中嵌入Java。在Lion和更新的版本中不再支持
JavaFrameEmbedding 10.5 -- 在Cocoa中嵌入Java
JavaScriptCore 10.5 5.0 Safari和其他WebKit程序使用的JavaScript解释器
JavaVM 10.0 -- Java运行时库的苹果移植
Kerberos 10.0 -- 提供Kerberos支持(Active Directory整合和一些UNIX域要求这项支持)
Kernel 10.0 -- 内核扩展所需要的框架
LDAP 10.0 P 最早的LDAP支持,被OpenDirectory所替代
LatentSemanticMapping 10.5 -- 隐含语义映射
MapKit -- 4.0 嵌入地图和地理信息编码数据
MediaPlayer -- 2.0 iPod播放器界面和电影播放界面
MediaToolbox 10.8 P  
Message 10.0 P 电子邮件消息的支持
MessageUI -- 3.0 发送消息和Mail.app(ComposeView和其他相关的视图)的UI资源
MobileCoreServices -- 3.0 精简版的CoreServices
Newsstandkit -- 5.0 支持iOS 5.0引入的“Newsstand”
NetFS 10.6 -- 网络文件系统(AFP、NFS)
OSAKit 10.4 -- Cocoa中整合OSA脚本的支持
OpenAL 10.4 2.0 跨平台音频库
OpenCL 10.6 P GPU/并行编程框架
OpenDirectory 10.6 -- Open Directory(LDAP)的Objective-C绑定
OpenGL 10.0 -- OpenGL——3D图形支持。在受支持的芯片组上链接至OpenCL
OpenGLES -- 2.0 嵌入式OpenGL——在iOS上替换OpenGL
PCSC 10.0 -- 智能卡的支持
PreferencePanes 10.0 -- System Preference面板支持。System Preference中的面板实际上都是保存在/System/Library/PreferencePanes目录下的bundle
PubSub 10.5 -- RSS/Atom支持
Python 10.3 -- Python脚本语言
QTKit 10.4 -- QuickTime支持
Quartz 10.4 -- 保护伞框架,包括PDF支持、ImageKit、QuartzComposer、QuartzFilter和QuickLookUI。负责系统中大部分2D图形的绘制
 (续表)  
框    架 OS X版本 iOS版本 作    用
QuartzCore 10.4 2.0 Quartz和Core相关的框架之间的接口
QuickLook 10.5 4.0 文件预览和缩略图生成
QuickTime 10.0 -- Quicktime嵌入
Ruby 10.5 -- 流行的脚本语言Ruby
RubyCocoa 10.5 -- Ruby语言的Cocoa绑定
SceneKit 10.8 -- 3D渲染。在Lion中是私有框架,但是在Mountain Lion中成为了公共框架
ScreenSaver 10.0 -- 屏幕保护相关的API
Scripting 10.0 -- 最早的脚本框架,现已废弃
ScriptingBridge 10.5 -- Objective-C语言的脚本适配器
Security 10.0 3.0 证书、密钥和安全随机数等的支持
SecurityFoundation 10.0 -- SF*系列认证
SecurityInterface 10.3 -- 证书、认证和钥匙链相关的用户界面的SF*系列头文件
ServerNotification 10.6 -- Notficiation支持
ServiceManagement 10.6 -- launchd的接口
StoreKit 10.7 3.0 应用内购的支持
SyncServices 10.4 -- 和.Mac同步日历
System 10.0 2.0 其他框架内部使用的框架
SystemConfiguration 10.0、10.3 2.0 包含SCNetwork和SCDynamicStore
TWAIN 10.2 -- 扫描仪支持
Twitter 10.8 5.0 Twitter支持(在iOS 5中)
Tcl 10.3 -- TCL解释器
Tk 10.4 -- Tk Toolkits
UIKit -- 2.0 Cocoa Touch——AppKit在iOS上的替代
VideoDecodeAcceleration 10.6.3 -- 通过GPU进行H.264加速(TN2267)
VideoToolkit 10.8 P 替代QuickTime图像压缩管理器,提供视频格式支持
WebKit 10.2 P HTML渲染(Safari的核心)
XgridFoundation 10.4~10.7 -- Xgrid集群(在Mountain Lion中被移除)
vecLib 10.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
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值