iOS技术层探索
Apple是以一系列层的方式来描述iOS实现的技术,其中每层都可以都可以在应用程序中使用的不同框架组成。大家最常接触的Cocoa Touch层就在最上面。
Figure 1: iOS技术层
下面对于每层进行简单的介绍。
1.Cocoa Touch层
Cocoa Touch层由多个框架构成,为应用程序提供核心功能(比如多任务和广告功能)。这些框架有:
(1)UIkit
负责启动和结束应用程序,控制界面和多点触摸事件,并能让开发者访问常见的数据视图(eg,网页以及word和Excel文档等)。除此之外,UIkit还负责了iOS内部众多的集成功能,比如访问多媒体库,照片库和加速计。
(2)Map Kit
这个框架的作用是让开发人员能在任何应用程序中添加Apple的Map视图,从而实现定位,位置标注导航等功能。
(3)Game Kit
不要被名字迷惑了,这个框架并不是只有游戏才会用到,它进一步提高了iOS应用的网络交互性,提供了创建并使用对等网络p2p(什么是对等网络?请看维基百科 )的机制,这包括会话发现,仲裁和语音聊天。这些功能可以加入到任何应用中。
(4)Message UI/Address Book UI/Event Kit UI
这三个框架可以让开发人员在任何应用中加入访问电子邮件,联系人和日历时间的功能。
(5)iAd
iAd框架支持在应用程序中加入广告。它是交互式广告组件,使用简单的拖放操作就可以将其加入到软件中。在应用程序中,开发这者不用管理iAd交互,Apple会完成的。
2.多媒体层
依靠多媒体层中的框架,iOS设备可以创建复杂的图形,播放音频和视频,甚至生成实时三维图形(3D)。
(1)AV Foundation
播放和编辑复杂的音频和视频,实习高级功能(电影录制,音轨管理,音频平移)。
(2)Core Audio
播放和录制音频,包含了AudioToolbox框架(播放警报声或短暂振动)和AudioUint框架(处理声音)。
(3)Core Image
添加高级图像和视频处理功能(像什么人脸识别,图像过滤之类的)。
(4)Core Graphics
向应用中添加2D绘画和合成功能。
(5)Core Text
对iPhone屏幕上显示的文本进行精确的定位和控制。
(6)Image I/O
用于导入和导出图像数据和图像元数据。
(7)Media Player
让开发者能够用屏幕控件轻松播放电影。
(8)OpenGL ES
是OpenGL框架的子集,适用于嵌入式系统(ES)。用于在应用中创建2D和3D动画。
(9)Quartz Core
创建利用设备硬件功能的动画(?重力感应吗?)。
3.核心服务层(Core Service)
核心服务层用于访问较低级的操作系统服务,比如文件存取,iCloud存取,联网等常见的数据对象类型。
(1)Account
始终在线,简化了存储帐号信息及身份验证的过程。
(2)Address Book
用于直接访问和操作地址簿
(3)CFNetwork
让开发者可以直接访问BSD套接字,HTTP和FTP协议请求及Bonjour。
(4)Core Data
提供了一个基于SQLite的关系数据库模型,可用于将数据绑定到界面对象,从而避免使用代码进行复杂的数据操作。
(5)Core Foundation
是过程性C语言框架,应该避免使用,因为比Objective-C的效率低。
(6)Foundation
提供了一个Objective-C的封装器(wrapper),封装了Core Float的功能。操作字符串,数组,字典,管理应用程序首选项,线程和本地化。
(7)Event Kit
访问日历信息。
(8)Core Location
GPS,获取经度和纬度信息,还有测量精度。
(9)Core Motion
管理iOS平台中大部分与运动有关的事件,比如加速计和陀螺仪。
(10)Newsstand
创建数字媒体期刊
(11)Pass Kit
(12)Quick Look
实现文件浏览功能
(13) Social
针对流行社交网站的框架。
(14)Store Kit
让开发者能够在应用程序中创建购买事物,而无需推出程序。
(15)System Configuration
确定设备网络的当前状态:连接的是哪一个网络啊?哪些设备可达啊?
4.核心OS层
是由最低级的iOS服务组成。包括线程,复杂的数学运算,硬件配件和加密。很少访问这些框架。
(1)Accelerate
简化了计算和大数操作任务,包括数字信号处理功能。
(2)Core Bluetooch
连接到低功耗蓝牙设备。
(3)External Accessory
开发到配件的接口,这些配件是基座接口或蓝牙连接的。
(4)提供了执行加密(加密/解密数据)的函数,包括与iOS密钥链交互以及添加,删除和修改密钥项。
(5)System
让开发人员能够访问不受限制的UNIX开发环境中的一些典型工具。
今天就到这里啦,可能刚开始写博客,没有什么文笔,我会继续努力,向前辈们学习,ありがとうございます!