很久之前就想写点什么东西,感觉总是很浮燥不够成熟,从今起为了走向自建静态库(.a 或者第三方framework,虽然这里的framework跟系统真正动态库长相一样,但仍然是静态库)开发,开始可以提供他人实用的框架,为此重温下知识 。
Core OS: 底层处理,提供上层支撑(其中包括内核环境、驱动及操作系统底层UNIX 接口)。
由FreeBSD和Mach所改写的Darwin, 是开源、符合POSIX标准的一个Unix核心。这一层包含或者说是提供了整个iPhone OS的一些基础功能,比如:硬件驱动, 内存管理,程序管理,线程管理(POSIX),文件系统,网络(BSD Socket),以及标准输入输出等等,所有这些功能都会通过C语言的API来提供。
iPhone OS提供了许多访问操作系统底层功能的接口集,并通过LibSystem库莱访问这些功能。如:线程、网络(sockets)、文件系统访问、标准I/O、Bonjour和DNS服务、内存分配、数学计算、区域信息。
介绍下POSIX、FreeBSD通往开发跨平台应用,有必要需要了解点背景:
POSIX表示可移植操作系统接口(Portable Operating System Interface ,缩写为 POSIX ),POSIX标准定义了操作系统应该为应用程序提供的接口标准,是IEEE为要在各种UNIX操作系统上运行的软件而定义的一系列API标准的总称,其正式称呼为IEEE 1003,而国际标准名称为ISO/IEC 9945。
POSIX标准意在期望获得源代码级别的软件可移植性。换句话说,为一个POSIX兼容的操作系统编写的程序,应该可以在任何其它的POSIX操作系统(即使是来自另一个厂商)上编译执行。
FreeBSD是一种类UNIX操作系统,是由经过BSD、386BSD和4.4BSD发展而来的Unix的一个重要分支。FreeBSD 为不同架构的计算机系统提供了不同程度的支持。并且一些原来BSD UNIX的开发者后来转到FreeBSD的开发,使得FreeBSD在内部结构和系统API上和UNIX有很大的兼容性。由于FreeBSD宽松的法律条款,其代码被好多其他系统借鉴包括苹果公司的MacOS X,正因此由于MacOS X的UNIX兼容性,使得Mac OS X获得了UNIX商标认证。
Accessory.framework 、External Accessory.framework 、Security.framework
Core Services:该层提供了大量功能,比如Foundation.framework和CoreFoundation.framework.
Foundation类层次的根是NSObject类,它(和NSObject及NSCopying协议一起)定义了基本的对象属性和行为。
经常涉及运用的系统库,以及简单介绍:
AddressBook.framework
支持编程访问存储于用户设备中的联系人信息。如果应用程序使用到联系人信息,则可通过该框架访问并修改用户联系人数据库的记录。
CFNetwork.framework
提供一组高性能基于C语言的接口,它们为使用网络协议提供面向对象抽象。
1.对协议栈进行更精细的控制,而且可以使用诸如 BSD socket这类底层结构。
2.简化FTP、HTTP服务器通讯、DNS主机解析任务
应用场景包括
1.使用SSL或TLS创建加密连接
2.使用BSD sockets
3.解析DNS主机
4.使用HTTP,校验HTTP以及HTTPS服务器。
5.使用FTP服务器
6.发布、解析并浏览 Bonjour服务。
Core Data.framework
Core Data框架是一种管理模型-视图-控制器应用程序数据模型的技术,它适用于数据模型已经高度结构化的应用程序。通过此框架,您再也不需要通过编程定义数据结构,而是通过Xcode提供的图形工具构造一份代表数据模型的图表。
CoreFoundation.framework
是一组C语言接口,它们为iOS应用程序提供基本数据管理和服务功能。
Foundation.framework
Foundation框架提供Objective-C接口。如果您将Foundation对象和Core Foundation类型掺杂使用,则可利用两个框架之间的 “toll-free bridging”。所谓的Toll-free bridging是说您可以在某个框架的方法或函数同时使用Core Foundatio和Foundation 框架中的某些类型。很多数据类型支持这一特性,其中包括群体和字符串数据类型。每个框架的类和类型描述都会对某个对象是否为 toll-free bridged,应和什么对象桥接进行说明。
Core Location.framework
可用于定位某个设备当前经纬度。它可以利用设备具备的硬件,通过附近的GPS、蜂窝基站或者WiFi信号等信息计算用户方位。Maps应用程序就是利用此功能在地图上显示用户当前位置。您可以将此技术结合到应用程序,以此向用户提供方位信息。
Core Telephony.framework
此框架为访问具有蜂窝无线的设备上的电话信息提供接口,应用程序可通过它获取用户蜂窝无线服务的提供商信息。如果应用程序对于电话呼叫感兴趣,也可以在相应事件发生时得到通知
Event kit.framework
此框架为访问用户设备的日历事件提供接口。您可以通过该框架访问用户日历中现有事件,可以增加新事件。日历事件可包含闹铃,而且可以配置闹铃激活规则。目前没有定制化视图扩展功能,以往项目只能自己实现类型功能。
SystemConfiguration.framwork
可用于确定设备的网络配置。您可以使用该框架判断Wi-Fi或者蜂窝连接是否正在使用中,也可以用于判断某个主机服务是否可以使用。
Mobile Core Services.framework
此框架定义统一类型标识符 (UTIs)使用的底层类型。
QuickLook.framework
应用程序可以用过该框架预览无法直接支持查看的文件内容。如果应用程序从网络下载文件或者需处理来源未知的文件,则非常适合使用此框架。因为应用程序只要在获得文件后,调用框架提供的视图控制器就可以直接在界面中显示文件的内容。
StoreKit.framework
此框架为iOS应用程序内购买内容或服务提供支持。Store Kit 框架会处于交易过程中和财务相关的事件,包括处理用户通过 iTunes Store账号发出的支付请求并且向应用程序提供交易相关信息。
Media 媒体层 上层处理与媒体相关诸如:处理图片、视频、音频等相关操作。
AssetsLibrary.framework
框架提供一个查询界面,您可以通过它查找用户照片和数据。通过使用该框架,您可以访问Photos管理的资产,包括用户保存的相册以及导入到设备中的图片或视频。而且您也可以将照片或者视频保存到用户的相册
AVFoundation.framework
该框架包含的Objective-C 类可用于播放音频内容。通过使用该框架,您可以播放声音文件或播放内存中的音频数据,也可以同时播放多个声音,并对各个声音的播放特定进行控制
Core Audio
Core Graphic.framework
包含Quartz 2D绘图API接口 。Quartz 是Mac OS X系统使用的向量绘图引擎,它支持基于路径绘图、抗锯齿渲染、渐变、图片、颜色、坐标空间转换、PDF文件的创建、显示和解析。虽然API基于C语言,但是它使用基于对象的抽象以表示基本绘图对象。
Core Video.framework
该框架为Core Media提供缓存和缓存池的支持。大多数应用程序都不应该直接使用该框架
ImageIO.framework
该框架的接口可用于导入或导出图像数据及图像元数据。该框架建构于 Core Graphics数据类型和函数之上,能够支持iOS 上所有的标准图像类型。
MediaPlayer.framework
为应用程序播放视频和音频内容提供高级支持。通过该框架,您就可以使用标准系统界面播放视频。 iOS 3.0增加了对访问用户iTune库的支持。因此,您可以利用该框架播放音乐曲目、播放列表、搜索歌曲并向用户显示媒体选取界面。
OpenAL.framework
OpenAL接口是在应用程序中发布方位音频的跨平台标准。通过使用该框架,您可以在游戏或者要求有方位音频输出的程序中实现高性能、高质量的音频。OpenAL是跨平台的标准,iOS平台使用OpenAL编写的代码模块可以移植到许多其他的平台运行。
OpenGLES.framwork
提供的工具可用于绘制2D及3D内容。该框架基于C语言,能够和设备硬件紧密协作,为全屏游戏类型的应用程序提供很高的帧速率。
QuartzCore.framework
包含Core Animation接口。Core Animation是高级动画制作和混合技术,它使用经过优化的渲染路径实现复杂的动画和视觉效果。它提供的高级Objective-C接口可对动画效果进行配置,然后在设备硬件中进行渲染,以此来提高程序的性能。Core Animation框架被整合到iOS的许多部分(包括UIKit框架中的许多类(如UIView)),可以为多种系统行为提供动画效果。您也可以使用该框架中的Objective-C接口直接创建定制动画
Metal.framework iOS8.0以后 A7 CPU架构 相当强大的处理引擎,相信会逐步取代OpenGLES。
metal技术正是可以让我们在移动端体验主机端画质的引擎。
Cocoa Touch
包含创建 iOS应用程序所需的关键框架。上至实现应用程序可视界面,下至与高级系统服务交互,都需要该层技术提供底层基础。在开发应用程序的时候,请尽可能不要使用更底层的框架,尽可能使用该层的框架。
AddressBookUI.framework
EventKitUI.framework
iAd.framework
GameKit.framework
MapKit.framework
MessageUI.framework
UIKit.framework 重点介绍下UIKit.framwork,虽然无时无刻不在使用它:
UIKit.framework Objective-C编程接口为实现iOS应用程序的图形及事件驱动提供关键基础。iOS系统所有程序都需要通过该框架实现下述核心功能:
1.应用程序管理
2.用户界面管理
3.图形和窗口支持
4.多任务支持
5.处理触摸及移动事件。
6.代表标准系统视图和控件的对象
7.文本和web内容相关操作
8.剪切、复制以及粘贴
9.使用动画显示用户界面内容
10.通过URL方式将其他应用程序整合到系统
11.苹果推送通知服务支持,请查看“苹果推送通知服务 ”
12.为残疾用户提供辅助功能
13.本地通知的调度和发送
14.创建PDF
15.使用定制输入视图(其行为类似系统键盘)
16.创建和系统键盘进行交互的定制文本视图
此外:UIKit还为下述和设备紧密相连的功能提供支持:
1.加速器数据
2.内置相机(存在相机的设备)
3.用户的图片库
4.设备名称和模型信息
5.电池状态信息
6.距离感应器信息
7.来自绑定听筒的远程控制信息