OS X和iOS公共框架列表
来源:互联网 发布:淘宝内衣真人秀图片 编辑:程序博客网 时间:2024/06/16 05:06
原文: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的框架真是技术的奇迹。不论从什么角度看,框架的精巧设计和可重用性都是超群的。图形相关的框架中有很多出色的例子,但是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 -e“set Volume 10”)
根据前文所述,应用程序可以完全依赖于框架,事实上很多OS X和iOS应用就是这么干的。然而框架本身也依赖于操作系统提供的库,下面就要讨论库。
- OS X和iOS公共框架列表
- OS X和iOS公共框架列表
- 详解OS X和iOS图像处理框架Core Image
- 详解OS X和iOS图像处理框架Core Image
- 详解OS X和iOS图像处理框架Core Image
- ios开发--OS X 和 iOS 的测绘框架 - Core Plot 入门教程
- 【OS X和iOS系统学习笔记】 OS X架构
- OS X 和 IOS 的图像处理框架 (Core Image)
- OS X 和 iOS 中的多线程技术
- OS X 和 iOS 中的多线程技术
- OS X 和 iOS 中的多线程技术
- OS X 和 iOS 中的多线程技术
- iOS和OS X中的bundle
- OS X 和 iOS 中的并发编程
- OS X 和 iOS 中的多线程技术
- 构建新的 App 和 App 更新时,必须使用公共(GM)版 Xcode 6 或更高版本、OS X 以及 iOS SDK。请勿提交使用 Beta 版软件,包括 Beta 版 OS X 构建的 App。
- 构建新的 App 和 App 更新时,必须使用公共(GM)版 Xcode 6 或更高版本、OS X 以及 iOS SDK。请勿提交使用 Beta 版软件,包括 Beta 版 OS X 构建的 App。
- iOS OS X:关于iOS和OS X废弃的API你需要知道的一切
- 实习小结十:jQuery获取父类class类名,控制不同板块
- 安卓小板的烧录步骤
- vb.net读取配置文件
- WWPN和WWNN的区别
- 单选框复选框
- OS X和iOS公共框架列表
- 从代码到可执行文件
- 数据库访问的一些公共的方法02-返回DataReader,DataSet,DataTable等对象
- 1016:Prime Ring Problem
- 一道关于字符串处理的题
- VC窗口的分割(锁定分割条与定制切分条)
- swirl 4: Vectors
- hudson的周期性自动构建规则
- asp.net—四种控件集