iOS 常用框架介绍

时间:2024-01-07 12:44:44
iOS框架介绍     
iOS 常用框架介绍
Cocoa Touch
GameKit  实现对游戏中心的支持,让用户能够在线共享他们的游戏相关的信息 
iOS设备之间蓝牙数据传输   从iOS7开始过期   局域网游戏  http://www.cnblogs.com/KidReborn/archive/2011/10/17/2215641.html
iAd     用来在应用中提供广告条
广告条与用户UI视图进行合并,与苹果的iAd服务一起工作,自动处理、加载和呈现富媒体广告以及应答在那些广告条上的点击等所有相关的工作。http://www.cocoachina.com/appstore/20100628/1762.html
MapKit     地图工具
定制地图的内容和外观,大头针注解,线路    http://www.cnblogs.com/kenshincui/p/4125570.html
MessageUI    在应用中提供编辑邮件和sms消息的支持
撰写电子邮件,并将其放入到用户的发件箱排队等候发送
该框架提供一个SMS撰写面板控制器。您可以通过它在应用程序中直接创建并编辑SMS信息(无需离开应用程序)
UIKit   提供实现图形和事件驱动的应用的至关重要的基础。
功能包括:
基本的应用管理和基础设施,包括应用的主循环;
用户接口管理,包括对storyboards和nib文件的支持;
一个用来封装用户UI内容的视图控制器模式; 
标准系统视图和控制对象;
提供处理触摸和运动事件的支持;
图形和窗口支持,包括支持外部显示器;View Programming Guide for iOS
多任务支持;
定制标准UIKit控制的外观;
支持文本和web内容;
剪切、复制、粘贴的支持;
支持动画UI;
通过url语义和框架接口与系统提供的其它应用集成的能力;
对有障碍用户的可存取性的支持;
支持ApplePush Notification服务;  Local and Remote Notification Programming Guide
本地通知调度和提交;     Local and Remote Notification Programming Guide
pdf 创建;
支持定制像系统键盘行为一样的用户输入视图;
支持创建与系统键盘交互的定制的文本视图;
支持通过email,Twitter, Facebook和其它服务共享内容。
也支持一些设备特定功能的集成,例如
1、内建的摄像机; 2、用户的图片库; 3、设备名和模式信息; 4、电池状态信息; 5、接近传感器信息; 6、来自附件耳机的远程控制信息
Media Layer
CoreImage  提供非破坏的方式(原先的图像不被改变)操作视频和静态图像
提供一组强大的内建过滤器,在触摸弹起、纠正图片以及面部和特征检测等许多方面使用(coreImage只是对图像进行处理,不是视图绘制和渲染,区别CG,GL等)
ImageIO  提供输入和输出图像数据和图像元数据的接口。
该框架利用CoreGraphics数据类型和功能,并支持在ios 上所有的可获得的标准的图像类型。你能使用这个框架存取Exif和IPTC元数据属性。
图片渐进式显示(SD对应功能原理)   http://blog.csdn.net/dyllove98/article/details/9707681   核心CGImageSource类属于ImageIO,和CG配合使用
AssetsLibrary    用户资源库,存取用户的图片、视频和媒体。
提供一个查询界面,查找用户照片和数据。可以访问用户保存的相册以及导入到设备中的图片或视频,也可以将照片或者视频保存到用户的相册。
PhotoKit 专门针对相片相册,比AssetsLibrary 更灵活也更高效
GLKit    提供OpenGL ES框架面向对象的接口,OpenGL是嵌入式设备中对软件进行图形加速,高质量压缩等处理的跨平台开源框架
该框架常用于游戏开发 http://blog.sina.com.cn/s/blog_3e50cef401019cxq.html  
CoreGraphics     核心绘图,包含Quartz 2D绘图API接口 
Quartz 是Mac OS X系统使用的向量绘图引擎,它支持基于路径绘图、抗锯齿渲染、渐变、图片、颜色、坐标空间转换、PDF文件的创建、显示和解析。
虽然API基于C语言,但是它使用基于对象的抽象以表示基本绘图对象,这样可以让开发者可以更方便地保存并复用图像内容 
QuartzCore  包含Core Animation接口,主要用于动画
Core Animation是 高级动画制作和混合技术,它使用经过优化的渲染路径实现复杂的动画和视觉效果。
它提供的高级Objective-C接口可对动画效果进行配置,然后在设备 硬件中进行渲染,以此来提高程序的性能。
Core Animation框架被整合到iOS的许多部分(包括UIKit框架中的许多类(如UIView)),可以为多种系统行为提供动画效果。
开发者也可以使用该框架中的Objective-C接口直接创建定制动画。http://blog.csdn.net/light_jewel/article/details/7819525
SpriteKit     为2d和2.5d游戏提供硬件加速的动画系统  
SpriteKit提供大多数游戏需要的基础,包括一个图形引擎和动画系统,声音播放支持,一个物理仿真引擎。
在Sprite Kit应用中内容组织为场景。一个场景包括纹理对象,视频,路径图形,核心图像过滤器和其它的特效。SpriteKit利用这些对象,确定这些对象到屏幕 上的最有效的方式。当在场景中到了动画内容的时刻,你能使用SpriteKit来显式规定你想执行的行动或使用物理仿真引擎来为那些对象定义物理行为(例 如重力、引力或排拆力)。
除了SpriteKit框架,也有其它Xcode工具来创建颗粒发射效果和纹理图。你能使用Xcode工具来管理应用资源和快速地更新Sprite Kit场景。
OpenAL  用来在应用中提供位置音效(立体感)的跨平台的标准。
多针对游戏,用于多通道三维位置音效的特效表现,能够使用该接口在游戏和其它需要位置音效输出的程序中实现高性能、高质量的声音。
因为OpenAL是跨平台的标准,在iOS使用OpenAL编写的代码能够容易地移植到许多其它平台。  http://blog.csdn.net/zengconggen/article/details/7591233
GameController  游戏控制器
发现和配置针对iPhone/iPod/iPad设备的游戏控制器。
游戏控制器可以是物理连接到iOS设备或者是通过蓝牙无线连接。
GameController框架当控制器可获得时通知你的应用让应用可以规定哪个控制器输入与你的应用相关。 http://blog.csdn.net/wanglang3081/article/details/39716959
MediaPlayer     为应用程序播放视频和音频内容提供支持
可使用标准系统界面播放视频,支持全屏和小窗口视频播放   http://www.cnblogs.com/kenshincui/p/4186022.html#video
添加对itunes库支持,播放音乐曲目、播放列表、搜索歌曲并向用户显示媒体选取界面
为用户提供可选的播放控制,新增数个界面用于支持配置和管理电影播放
AVFoundation  为管理声音以及视频播放和记录提供高级支持,
功能包括媒体资源管理,媒体编辑,电影捕捉,电影播放,曲目管理,,媒体项的元数据管理,立体声淘选,不同声音的精确同步,判断声音文件详细信息等
MP对比AV:高度封装,无法自定义播放器,AVFoundation可以,更灵活更底层;MP不提供录像功能
AV/MP对比第三方框架:支持格式较少
iOS 常用框架介绍
视频监控/视频直播  HLS协议   http://www.cnblogs.com/haibindev/archive/2013/01/30/2880764.html  
MediaAccessibility     管理媒体文件中字幕的设置
管理媒体文件中字幕(closed-caption)内容的显示。通过该Framework与settings的结合,可以让用户开启字幕的显示并设置字幕样式。  
CoreAudio    框架提供C语言接口,可用于操作立体声音频
可通过该框架访问设备的震动功能(支持震动功能的设备)。
iOS 常用框架介绍
扬声器听筒模式的切换 http://www.tuicool.com/articles/YVnAJb
CoreVideo    为Core Media框架提供缓冲和缓冲池支持。
多数应用从不直接使用该框架。
CoreText     提供一个对文本进行布局和字体处理的简单的、高性能的C-based接口
提供一个完整的文本布局引擎,可以通过它管理文本在屏幕上的摆放。所管理的文本也可以使用不同的字体和渲染属性。
用在不使用TextKit但仍想获得在字处理应用中先进文本处理能力的场景,NSAttributedString的前身
StoreKit     提供iOS内购接口
提供在ios应用中购买内容和服务的支持,也可以为付费内容部分进行解锁 http://blog.csdn.net/xiaominghimi/article/details/6937097/
Core Services
NewsstandKit    为用户提供了一个阅读杂志和报纸的中心位置
想通过Newsstand提供杂志和报纸内容的出版商能够使用该框架创建它们自己的iOS应用,让用户启动新杂志和报纸新闻的后台下载。
在启动下载后,系统处理下载操作和当内容可获得时通知应用。  http://mobile.51cto.com/iphone-423385.htm
AddressBook  在系统通讯录中创建新的联系人和编辑和选择已存在的联系人 
AdSupport 提供存取应用用于广告功能的一个标识。
该框架也提供一个指示用户是否选择广告跟踪的标志。应用在试图存取广告标识前需要度和判断这个标志。
Accounts       用户账号数据库—用于iOS原生支持的单点登录
iOS5开始iOS原生支持部分社交平台单点登录,若用户在设置中设置平台账号,则App代码中使用account框架并对应平台,可直接进行单点登录操作 http://guandongsheng.iteye.com/blog/1866659  http://blog.csdn.net/ysy441088327/article/details/8275808
优点:无需web形式取token   系统设置账户可以同步昵称&头像
缺点:原生仅支持部分平台  必须使用特定的api进行网络请求(SLRequest social.framework)  
Social     提供一个简单的接口来存取用户的社交媒体账号
该框架取代Twitter框架并增加了其它社交账号,包括Facebook、Sina微博以及其它
应用能使用该框架提交状态更新和图像到用户账号。该框架与Accounts框架一起为用户提供单点登录并确保存取的用户账号是经过准许的。
MultipeerConnectivity   用于iOS设备之间的连接,从iOS7开始引入(取代Gamekit蓝牙传输模块),主要用于文件共享(仅限于沙盒的文件)
提供一个完整的文本布局引擎,可以通过它管理文本在屏幕上的摆放。所管理的文本也可以使用不同的字体和渲染属性。
Foundation   Core Foundation框架的许多功能提供Objective-C封装
提供功能:
群体数据类型 (数组、集合等);程序包;字符串管理;日期和时间管理;原始数据块管理;偏好管理;URL及数据流操作;线程和RunLoop;Bonjour;通讯端口管理;国际化;正则表达式匹配;缓存支持 
 
 
CoreData      iOS用于数据库技术的框架          
管理模型-视图-控制器应用程序数据模型的技术,它适用于数据模型已经高度结构化的应用程序
通过此框架不需要通过编程定义数据结构,而是通过Xcode提供的图形工具构造一份代表数据模型的图表。
在程序运行的时候,Core Data框架就会创建并管理数据模型的实例,同时还对外提供数据模型访问接口。
通过Core Data管理应用程序的数据模型,可以极大程度减少需编写的代码数量。除此之外,Core Data还具有下述特征:
将对象数据存储在SQLite数据库以获得性能优化。
提供NSFetchedResultsController 类用于管理表视图的数据。
管理undo/redo操作。
属性值校验支持。
支持对数据变化进行传播,并且不会改变对象间的关联。
支持对数据进行归类,过滤,并支持对内存数据进行管理。  http://blog.csdn.net/kesalin/article/details/6739319
PassKit      对应用提供系统应用PassBook的接口
Passbook提供了一个存储订货单、登机卡、入场券和商业折扣卡的位置,代替物理携带这些东西
卡劵由应用自身的web service创建并通过email、Safari或定制的应用提交到用户的设备。电子入场券本身使用特殊的文件格式,在提交之前被加密签名,签名去开发者中心申请,支付时通过二维码和商户交互
需要应用支持,是iOS官方提供的NFC解决方案,提供如到达商户位置自动提醒优惠券的功能 http://blog.csdn.net/eqera/article/details/8136880 
Safari Services       为应用提供添加url到safari书签的接口
QuickLook      预览无法直接支持查看的文件内容
对于一些未知的格式,我们一般可以通过webview打开,如pdf、doc、docx、xls、xlsx、ppt、txt及一些常见图片格式
QuickLook框架可以做到以上webview的功能(OSX上的空格预览,xcode图片插件显示bundle图片),通过预览的形式,比webview性能好并且支持适配,跳页和选择应用打开等   http://blog.csdn.net/kmyhy/article/details/9216461
CFNetwork      C语言的iOS网络框架
相对Connection、Session更底层更灵活,ASI的实现基于CFNetwork
EventKit      月历事件UI框架 为访问用户设备的日历事件提供接口
可以通过该框架访问用户日历中现有事件,可以增加新事件。日历事件可包含闹铃,而且可以配置闹铃激活规则  http://www.swiftmi.com/topic/248.html   http://www.tairan.com/archives/7729/
CoreLocation     iOS定位框架
可以利用设备具备的硬件,通过附近的GPS、蜂窝基站或者WiFi信号等信息计算用户方位。
Maps应用程序就是利用此功能在地图上显示用户当前位置。
可以将此技术结合到应用程序,以此向用户提供方位信息。例如,应用程序可根据用户当前位置搜索附近饭店、商店或其他设施 。
Mobile Core Services      移动核心服务框架
定义在通用类型标识符(UTIs)中使用的低级别类型。
很多API是私有未公开的,如LSApplicationWorkspace 获取系统的所有安装app  http://www.kejik.com/article/8004.html
Core Telephony      提供与蜂窝通信(移动流量)相关的信息交互的接口
使用该框架来获得用户的蜂窝服务提供者的信息。
对蜂窝call事件(网络电话)感兴趣的应用例如VoIP应用也能在那些事件出现时被通知。
越狱下,可以监听来电信息     http://blog.csdn.net/likendsl/article/details/8425046
Core Motion       提供一组接口来存取设备上可获得的运动数据
该框架支持使用一组新的block-based接口来存取原始和加工过的加速度计数据。对于带有陀螺仪的设备,你也能获得原始的陀螺仪数据和加工过的反应设备方向和旋转速度的数据。
你能在游戏或其它使用运动作为输入或作为增强用户体验的方式的应用中使用加速度计和陀螺仪两种数据。对于带有计步硬件的设备,你能存取它的数据来跟踪健康相关的运动。   
Healthkit        为应用提供健康和健身数据的接口
HealthKit管理从不同来源获得的数据,并根据用户的偏好设置,自动将不同来源的所有数据合并起来。
HealthKit也可以直接与健康和健身设备一起工作   http://www.csdn.net/article/2015-01-23/2823686-healthkit-tutorial-with-swift/1
JavaScriptCore     为许多标准的JavaScript对象提供Objective-C语言的封装
使用该框架来执行JavaScript代码和分析JSON数据
其实只是基于webkit中以C/C++实现的JavaScriptCore的一个包装,在iOS7苹果引入该框架之前,很多开发者也会自行将webkit的库引入项目编译使用 
相比webview的oc&js互调更加灵活,包括数据类型/方法的转换、监听js调用异常等     http://www.cnblogs.com/ider/p/introduction-to-ios7-javascriptcore-framework.html
基于JavaScriptCore的OC&JS互调     http://blog.csdn.net/lwjok2007/article/details/47058101
CoreFoundation       为ios应用提供基本的数据管理和服务功能的C-based接口
功能包括:集合数据类型(数组、集合等等);应用打包Bundles;字符串管理;日期和时间管理原始数据块管理Preferences管理;URL和流操作;线程,端口和socket通讯等
Foundation框架与CoreFoundation框架紧密相关,为相同的基本功能提供Objective-C接口。
当你需要混合使用Foundation对象和Core Foundation类型时,你能利用两个框架之间存在的“toll-freebridging”。toll-free bridging”意味着你能可交换地在两个框架的方法和功能中使用一些CoreFoundation和Foundation类型。这个支持对许多数据类型可用,包括集合和字符串数据类型。
每个框架的类和类型描述声明一个对象是否是toll-freebridged以及在是的情况下来标识它连接到什么对象。
SystemConfiguration      可用于确定设备的网络配置的接口
你能用它来确定设备的网络配置,也能使用该框架确定一个Wi-Fi或蜂窝连接是否在用以及一个特定的主机服务器是否能够存取
iOS开源的Reachability框架就是基于此框架      http://blog.csdn.net/sanpintian/article/details/7642756     http://www.cnblogs.com/worldtraveler/p/4708092.html    
Core Media        核心媒体框架
提供由AV Foundation框架使用的底层媒体类型。
大多数应用从不需要使用该框架,但少数需要更精确控制音视频内容创建和呈现的开发者可以使用它。
Core OS
Accelerate   加速向量计算
加速框架,其中含有C的API用于向量和矩阵运算,大数字以及DSP(数字信号处理)运算和图像处理
两个核心库vecLib(vector 向量)和vImage(图像处理)
vImage应用:
vimage卷积算法    vImageBoxConvolve_ARGB8888  最靠谱
coreImage滤镜      CPU渲染,效率低耗时长
UIBlurEffect          iOS8新特性
GPUImage            速度和效果都不好,但是cpu占用更少   http://www.cocoachina.com/industry/20140210/7793.html
ExternalAccessory       用于第三方蓝牙设备交互,但是蓝牙设备必须经过苹果MFi认证(国内较少)
CoreBluetooth  (  时下热门)可用于第三方蓝牙设备交互
必须要支持蓝牙4.0 硬件至少是4s,系统至少是iOS6 蓝牙4.0以低功耗著称,一般也叫BLE(Bluetooth Low Energy)目前应用比较多的案例:运动手坏、嵌入式设备、智能家居
Security      安全框架
除了内建的安全功能,iOS也提供了一个明确的安全框架(Security.framework),你能用它来保证应用管理的数据的安全。
该框架提供管理证书、公有和私有key和信任策略的接口。支持产生加密安全伪随机码。它也支持在keychain(保存敏感用户数据的安全仓库)中保存证书和加密key。
公共加密库提供对称加密、hash认证编码(HMACs)、数字签名等额外支持,数字签名功能本质上与iOS上没有的OpenSSL库兼容。
在你创建的多个应用之间共享keychain是可能的。共享使它容易在相同的一套应用之间更平滑的协作。例如,你能使用该功能来共享用户口令或其它元素,否则可能使每个应用都需要提示用户。
为了在应用之间共享数据,必须为每个应用的Xcode工程配置适当的权限。
Generic Security Services     通用安全服务框架
GenericSecurity Services 框架 (GSS.framework)给ios应用提供一组标准安全相关的服务。该框架的基本接口规定在IETFRFC2743 andRFC4401
除了提供标准的接口,IOS还包括一些没有在标准中规定但被许多应用需要的一些管理证书需要的额外东西。
System   系统框架
系统层包括内核环境、驱动及操作系统底层UNIX 接口。内核以Mach为基础,它负责操作系统的各个方面,包括管理系统的虚拟内存、线程、文件系统、网络以及进程间通讯。这一层包含的驱动是系统硬件和系 统框架的接口。出于安全方面的考虑,内核和驱动只允许少数系统框架和应用程序访问。
应用程序可以使用iOS提供的LibSystem库访问多种操作系统底层功能。
LibSystem库的接口基于C语言,可为下述功能提供支持: 线程 (POSIX GCD),网络 (BSD sockets),文件系统访问,标准 I/O,Bonjour和 DNS服务,区域信息,内存分配,数学计算